Membandingkan String (indeks) [duplikat]

Jan 12 2021

bagaimana membandingkan dua array dengan indeks yang tepat misalnya

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

Saya mencoba ini

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

sekarang jika perbandingan dimulai dari indeks 0 untuk test1 itu harus dibandingkan hanya dengan indeks 0 untuk test2 saya ingin mencari indeks kosong (misalnya indeks 3 untuk test2 yang terkait dengan test1 indeks 3) dan melakukan beberapa hal

Saya banyak membaca tetapi saya mengalami beberapa kesulitan, terima kasih sebelumnya.

Jawaban

Pieter12345 Jan 12 2021 at 22:04

Dari apa yang saya pahami, Anda ingin membandingkan dua larik yang mungkin tidak berukuran sama, dan jika tidak, maka hanya membandingkan hingga ukuran terpendek? Anda bisa melakukan sesuatu seperti ini:

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

Gunakan .equals()untuk membandingkan String. ==digunakan untuk membandingkan primitif.

Juga tidak perlu 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

Saat Anda membandingkan Strings di Java, Anda harus menggunakan EQUALS karena mereka adalah objek. Juga, tidak ada gunanya melakukan dua putaran. Coba saja ini:

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

Gunakan deepEquals () dari 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 () mengembalikan nilai true