Comparaison de la chaîne (index) [duplicate]

Jan 12 2021

comment comparer deux tableaux avec un index exact par exemple

String[] test1 = {"a","b","c","d"};
String[] test2 = {"a","b","c",""};

J'ai essayé ça

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

maintenant, si la comparaison commence à l'index 0 pour test1, elle doit être comparée uniquement à l'index 0 pour test2 Je veux trouver l'index vide (par exemple l'index 3 pour test2 qui est lié à test1 index 3) et faire des choses

Je lis beaucoup mais j'ai quelques difficultés, merci d'avance.

Réponses

Pieter12345 Jan 12 2021 at 22:04

D'après ce que je comprends, vous voulez comparer deux tableaux qui pourraient ne pas être de la même taille, et s'ils ne le sont pas, comparer uniquement à la taille la plus courte? Vous pouvez faire quelque chose comme ceci:

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

Utilisez .equals()pour comparer des chaînes. ==est utilisé pour comparer les primitives.

Il n'y a pas non plus besoin de 2 boucles.

for(int i = 0; i < test1.length; i++){
    if(test1[i].equals("")||test2[i].equals(""){
        //Do something
    }
}
pabloespinosa12 Jan 12 2021 at 22:03

Lorsque vous comparez des chaînes en Java, vous devez utiliser EQUALS car ce sont des objets. En outre, il n'y a pas de point sur deux boucles. Essayez simplement ceci:

for (int i = 0; i < test1.length; i++) {
    if (test2[i].equals("") ) {do stuff}
}
NehaK Jan 12 2021 at 22:52

Utilisez deepEquals () de 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));

Sortie: deepEquals () renvoie true