Confronto di stringa (indice) [duplicato]
come confrontare due array con l'indice esatto, ad esempio
String[] test1 = {"a","b","c","d"};
String[] test2 = {"a","b","c",""};
Ho provato questo
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
ora se il confronto parte dall'indice 0 per test1 dovrebbe essere confrontato solo con l'indice 0 per test2 Voglio trovare l'indice vuoto (ad esempio l'indice 3 per test2 che è correlato all'indice test1 3) e fare alcune cose
Leggo molto ma ho qualche difficoltà, grazie in anticipo.
Risposte
Da quello che ho capito, vuoi confrontare due array che potrebbero non avere la stessa dimensione e, se non lo sono, confrontare solo fino alla dimensione più corta? Puoi fare qualcosa del genere:
boolean equals = true;
for(int i = 0; i < test1.length && i < test2.length; i++) {
if(!test1[i].equals(test2[i])) {
equals = false;
break;
}
}
Utilizzare .equals()
per confrontare le stringhe. ==
viene utilizzato per confrontare le primitive.
Inoltre, non sono necessari 2 loop.
for(int i = 0; i < test1.length; i++){
if(test1[i].equals("")||test2[i].equals(""){
//Do something
}
}
Quando si confrontano stringhe in Java, è necessario utilizzare EQUALS poiché sono oggetti. Inoltre, non ha senso due loop. Prova questo:
for (int i = 0; i < test1.length; i++) {
if (test2[i].equals("") ) {do stuff}
}
Usa deepEquals () di 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));
Output: deepEquals () restituisce true