Estou tentando resolver um problema em "praticá-la", e eu não sou capaz de passar todos os testes a ele.
O problema é:
Escrever um método chamado iguais que leva em duas matrizes de cadeia e retorna true se eles são iguais; isto é, se ambas as matrizes têm o mesmo comprimento e contêm valores de cadeia equivalentes em cada índice.
Eu tentei o código a seguir, mas o teste para a entrada equals({"a", "b", "a", "c", "a", "d", "a", "e", "a"}, {"x", "b", "a", "c", "a", "d", "a", "e", "a"})
, mas ele não funciona.
public static boolean equals (String [] txt1, String [] txt2){
boolean result=false;
if(txt1.length==txt2.length){
for(int i=0; i<txt1.length; i++){
if(txt1[i].equals(txt2[i])){
result = true;
}
else {
result = false;
}
}
}
else {
return false;
}
return result;
}
Retorno esperado: false
Meu retorno:true
As mentiras de problema no loop:
for(int i=0; i<txt1.length; i++){
if(txt1[i].equals(txt2[i])){
result = true;
}
else {
result = false;
}
}
O if
é executado para cada elemento, portanto, em essência seu único código verifica se o último elemento é o mesmo para ambas as matrizes, já que isso sobrepõe anteriores result = false;
ocorrências.
A solução correta é parar e retornar imediatamente false
uma vez um único elemento é diferente:
for(int i=0; i<txt1.length; i++){
if(txt1[i].equals(txt2[i])){
result = true;
}
else {
return false;
}
}