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