Vergleichen von String (Index) [Duplikat]

Jan 12 2021

wie man zum Beispiel zwei Arrays mit dem exakten Index vergleicht

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

Ich habe es versucht

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

Wenn der Vergleich jetzt bei Index 0 für Test1 beginnt, sollte er nur mit Index 0 für Test2 verglichen werden. Ich möchte den leeren Index finden (zum Beispiel Index 3 für Test2, der mit Test1 Index 3 zusammenhängt) und einige Dinge tun

Ich lese viel, habe aber einige Schwierigkeiten, danke im Voraus.

Antworten

Pieter12345 Jan 12 2021 at 22:04

Soweit ich weiß, möchten Sie zwei Arrays vergleichen, die möglicherweise nicht dieselbe Größe haben. Wenn dies nicht der Fall ist, vergleichen Sie nur die kürzeste Größe. Sie können so etwas tun:

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

Verwenden Sie .equals()diese Option , um Strings zu vergleichen. ==wird zum Vergleichen von Grundelementen verwendet.

Es sind auch keine 2 Schleifen erforderlich.

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

Wenn Sie Strings in Java vergleichen, müssen Sie EQUALS verwenden, da es sich um Objekte handelt. Es macht auch keinen Sinn, zwei Schleifen zu verwenden. Versuchen Sie einfach Folgendes:

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

Verwenden Sie deepEquals () von 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));

Ausgabe: deepEquals () gibt true zurück