我遇到了一个非常大的问题,因为我需要删除随机X x Y数组中的任何重复数字。我尝试通过在另一个内部写四个“fors”来做到这一点,但它没有用。有人能帮我吗? 假设阵列中有34次,所以第一个将保持34,其他将设置为0,另一个将保持为0。
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();
}
}
答案 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]
的值设置为零。
这将重复矩阵中的每个元素。
答案 1 :(得分: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();
}
}