Como ver se 2 int[][] contêm os mesmos pares de números? JAVA

Retorna sempre falso, e eu já consegui perceber o erro. Mas estou com dificuldades a conseguir comparar com o par seguinte. Mas devia dar certo porque contêm os mesmos 2 pares de numeros.

public class MyClass {
    public static void main(String args[]) {
     int[][] v = { {2,1}, {3,4} };
     int[][] m = { {3,4},{2,1} };
     
      System.out.println(equalArray(v,m));
    }
    
    // @requires {v.length == m.length}
    public static boolean equalArray(int[][] v, int[][] m) {
		boolean equal = false;

		for(int i = 0; i < v.length; i++) {
			if(v[i][0] == m[i][0] && v[i][1] == m[i][1] ) {
		        equal = true;
			}
		}

		return equal;
	}
}

Onde está declarada a variável j?

só agora é que notei era do 2º for que tinha feito, mas tambem não dava… vou corrigir na pergunta

1 curtida

Tentei aqui e parece que deu certo:

public class Main {
	
	public static void main(String args[]) {
		int[][] v = { 
			{ 2, 1 }, 
			{ 3, 4 } 
		};
		
		int[][] m = {
			{ 3, 4 },
			{ 2, 1 }
		};
		
		System.out.println(equalArray(v, m));
	}
	
	public static boolean equalArray(int[][] v, int[][] m) {
		if (v.length != m.length) {
			return false;
		}
		
		int countEquals = 0;

		for (int i = 0; i < v.length; i++) {
			for (int j = 0; j < m.length; j++) {
				if (v[i][0] == m[j][0] && v[i][1] == m[j][1]) {
					countEquals++;
				}
			}
		}

		return countEquals == v.length;
	}
}

Só acho que o método poderia chamar algo como containsAll do que equalArray, pq a ordem não importa.

1 curtida

já percebi, obrigado!!

1 curtida