Porównywanie ciągu (indeks) [duplikat]
na przykład jak porównać dwie tablice z dokładnym indeksem
String[] test1 = {"a","b","c","d"};
String[] test2 = {"a","b","c",""};
Próbowałem tego
for (int i = 0; i < test1.length; i++) {
for (int j = i; j < test2.length; j++) if (i==j) if (i == j && test2[j] == "" ) {do stuff}
}
// but always give true
teraz jeśli porównanie zaczyna się od indeksu 0 dla test1, powinno być porównane tylko z indeksem 0 dla test2 Chcę znaleźć pusty indeks (na przykład indeks 3 dla test2, który jest powiązany z test1, indeks 3) i coś zrobić
Dużo czytam, ale mam pewne trudności, z góry dziękuję.
Odpowiedzi
Z tego, co rozumiem, chcesz porównać dwie tablice, które mogą nie być tego samego rozmiaru, a jeśli nie, to porównać tylko do najkrótszego rozmiaru? Możesz zrobić coś takiego:
boolean equals = true;
for(int i = 0; i < test1.length && i < test2.length; i++) {
if(!test1[i].equals(test2[i])) {
equals = false;
break;
}
}
Służy .equals()
do porównywania ciągów. ==
służy do porównywania prymitywów.
Nie ma również potrzeby stosowania 2 pętli.
for(int i = 0; i < test1.length; i++){
if(test1[i].equals("")||test2[i].equals(""){
//Do something
}
}
Porównując ciągi znaków w Javie, musisz używać równości, ponieważ są one obiektami. Nie ma też sensu na dwóch pętlach. Po prostu spróbuj tego:
for (int i = 0; i < test1.length; i++) {
if (test2[i].equals("") ) {do stuff}
}
Użyj funkcji deepEquals () z Arrays.java:
import java.util.Arrays;
String[][] s1 =
{
{"A", "B", "C"},
{"X", "Y", "Z"}
};
String[][] s2 =
{
{"A", "B", "C"},
{"X", "Y", "Z"}
};
System.out.println("deepEquals() returns " + Arrays.deepEquals(s1, s2));
Wynik: deepEquals () zwraca wartość true