Confronto di stringa (indice) [duplicato]

Jan 12 2021

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

Pieter12345 Jan 12 2021 at 22:04

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;
    }
}
Spectric Jan 12 2021 at 22:02

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
    }
}
pabloespinosa12 Jan 12 2021 at 22:03

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}
}
NehaK Jan 12 2021 at 22:52

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