2013-11-25 53 views
-2

我遇到了一个非常大的问题,这是因为我需要删除随机X x Y数组中的任何重复数字。我试图通过在另一个中写入四个“fors”来实现,但它不起作用。有人能帮我吗? 假设有数组中的34个三倍,所以第一个将保持34和其他人将被设置为0,其他0的仍将是0删除二维数组中的重复值java

for (int linha = 0; linha < tamanhoLinhas; linha++) { 
     for (int coluna = 0; coluna < tamanhoColunas; coluna++) { 
      matriz[linha][coluna] = rand.nextInt(100); 
     } 
    } 

    for (int linha = 0; linha < tamanhoLinhas; linha++) { 
     for (int coluna = 0; coluna < tamanhoColunas; coluna++) { 
      int numeroAtual = matriz[linha][coluna]; 
      for (int linha2 = 0; linha2 < tamanhoLinhas; linha2++) { 
       for (int coluna2 = 0; coluna2 < tamanhoColunas; coluna2++) { 
        if (numeroAtual == matriz[linha][coluna]){ 
         matriz[linha][coluna] = 0; 
        } 
       } 
      } 
     } 
    } 

    for (int i = 0; i < tamanhoLinhas; i++) { 
     for (int j = 0; j < tamanhoColunas; j++) { 
      System.out.print(matriz[i][j] + " "); 
     } 
     System.out.println(); 
    } 
} 
+1

显示您的代码。始终,始终显示您的代码。 – MarsAtomic

+0

好的,但这只是因为我没有XD,但我可以尝试。 –

+0

是什么让你觉得它不起作用?你不期望的是什么? –

回答

0
for (int linha = 0; linha < tamanhoLinhas; linha++) { 
    for (int coluna = 0; coluna < tamanhoColunas; coluna++) { 
     int numeroAtual = matriz[linha][coluna]; 
     for (int linha2 = 0; linha2 < tamanhoLinhas; linha2++) { 
      for (int coluna2 = 0; coluna2 < tamanhoColunas; coluna2++) { 
       if (numeroAtual == matriz[linha][coluna]){ 
        matriz[linha][coluna] = 0; 
       } 
      } 
     } 
    } 
} 

在此代码的结果将数组的每个元素设置为零。举个例子,假设

linha == 3, coluna == 3 

在进入第三for循环,numeroAtual == 22。内部循环将扫描整个阵列,并在某个点将达到[3,3],这将等于numeroAtual;这将导致matriz[3,3]的值被设置为零。

这将重复矩阵中的每个元素。

+0

确切地说,我现在测试了它,并且它给了我和你说的相同的结果。 –

0

嗯,我做到了,但现在有点不同了。 最初,程序会修改所有重复的数字,但现在用户只选择一个,程序创建一个随机的二维数组并找到重复的数字并将它们切换为0. 以下是我如何做的: public void questao7(int numeroSelecionado){

int tamanhoLinhas = (rand.nextInt(9) + 1); 
    int tamanhoColunas = (rand.nextInt(9) + 1); 
    int matriz[][] = new int[tamanhoLinhas][tamanhoColunas]; 
    boolean duplicado = false; 

    for (int linha = 0; linha < tamanhoLinhas; linha++) { 
     for (int coluna = 0; coluna < tamanhoColunas; coluna++) { 
      matriz[linha][coluna] = rand.nextInt(100); 
     } 
    } 

    System.out.println("Matriz original: "); 
    for (int i = 0; i < tamanhoLinhas; i++) { 
     for (int j = 0; j < tamanhoColunas; j++) { 
      System.out.print(matriz[i][j] + " "); 
     } 
     System.out.println(); 
    } 

    for (int linha = 0; linha < tamanhoLinhas; linha++) { 
     for (int coluna = 0; coluna < tamanhoColunas; coluna++) { 
      if (!duplicado) { 
       if (matriz[linha][coluna] == numeroSelecionado){ 
        duplicado = true; 
       }      
      } else if (matriz[linha][coluna] == numeroSelecionado) { 
       matriz[linha][coluna] = 0; 
      } 
     } 
    } 

    System.out.println("Matriz modificada: "); 
    for (int i = 0; i < tamanhoLinhas; i++) { 
     for (int j = 0; j < tamanhoColunas; j++) { 
      System.out.print(matriz[i][j] + " "); 
     } 
     System.out.println(); 
    } 
}