Comparar ambos lados de una matriz en java

Болото Estoy intentando hacer un programa que diga si la matriz es igual desde cualquier lado en la que se en плащи с капюшоном, es decir, en la matriz

1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1

плащ с капюшоном tiene una primera de unos, luego otra de dos y una ultima de tres. Para ello cojo la triangular нижний y la superior, esta ultima invertida y las comparo y saldría 112123122211111 недостатков DOS, por lo que son iguales. Он матрицы probando el comparar ambas o el meter los números de la matriz en un array y luego compararlo pero не меня lo выдерживает сравнение, ya que en esa matriz tendría que salir que es igual. El código que tengo es:

public class matrizigual {

public static void main(String args[]) {

    int[][] matriz = { { 1, 1, 1, 1, 1 }, { 1, 2, 2, 2, 1 },
            { 1, 2, 3, 2, 1 }, { 1, 2, 2, 2, 1 }, { 1, 1, 1, 1, 1 }, };
    imprimirMatriz(matriz);
}

public static void imprimirMatriz(int[][] matriz) {
    int lado = matriz.length;
    int[][] matriz1 = new int[lado][lado];
    int[][] matriz2 = new int[lado][lado];

    for (int i = 0; i < lado; i++) {
        for (int j = 0; j <= i; j++) {
            matriz1[i][j] = matriz[i][j];
            System.out.print(matriz1[i][j]);

        }

    }
    System.out.println();
    System.out.println();

    for (int i = lado - 1; i >= 0; i--) {
        for (int j = matriz[i].length - 1; j >= i; j--) {

            matriz2[i][j] = matriz[i][j];
            System.out.print(matriz2[i][j]);

        }
    }
    System.out.println();
    if (matriz1 == matriz2) {
        System.out.println("Es igual");

    } else {  
        System.out.println("No es igual");
    }

  }
}
2
задан 26.01.2017, 12:43
0 ответов

Ты должен использовать следующий comparador для массивов:

Arrays.deepEquals(matriz1, matriz2)

comparador == реши, что это различные объекты (различные ссылки), ты можешь пытаться так:

for (int i = 0; i < lado; i++) {
    for (int j = 0; j <= i; j++) {
        matriz1[i][j] = matriz[i][j];
        matriz3[i][j] = matriz[i][j];

        System.out.print(matriz1[i][j]);
    }
    System.out.println("");
}

... и если ты сравниваешь массивы 1 и 3 с ==, результат фальшивый, взамен, с Arrays.deepEquals(matriz1, matriz2) результат положительный.

2
ответ дан 03.12.2019, 17:31
  • 1
    Он продолжает встречаться false таким образом deepEquals. –  25.01.2017, 20:13