การเปรียบเทียบสตริง (ดัชนี) [ซ้ำ]

Jan 12 2021

วิธีเปรียบเทียบอาร์เรย์สองอาร์เรย์กับดัชนีที่แน่นอนตัวอย่างเช่น

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

ฉันลองสิ่งนี้แล้ว

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

ตอนนี้ถ้าการเปรียบเทียบเริ่มต้นที่ดัชนี 0 สำหรับ test1 ควรเปรียบเทียบกับดัชนี 0 เท่านั้นสำหรับ test2 ฉันต้องการหาดัชนีว่าง (เช่นดัชนี 3 สำหรับ test2 ซึ่งเกี่ยวข้องกับดัชนี test1 3) และทำบางสิ่ง

ฉันอ่านมาก แต่มีปัญหาขอบคุณล่วงหน้า

คำตอบ

Pieter12345 Jan 12 2021 at 22:04

จากสิ่งที่ฉันเข้าใจคุณต้องการเปรียบเทียบอาร์เรย์สองอาร์เรย์ที่อาจมีขนาดไม่เท่ากันและถ้าไม่ใช่ให้เปรียบเทียบกับขนาดที่สั้นที่สุดเท่านั้น? คุณสามารถทำสิ่งนี้:

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

ใช้.equals()เพื่อเปรียบเทียบสตริง ==ใช้สำหรับการเปรียบเทียบดั้งเดิม

นอกจากนี้ยังไม่จำเป็นต้องมี 2 ลูป

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

เมื่อคุณเปรียบเทียบ Strings ใน Java คุณต้องใช้ EQUALS เนื่องจากเป็นอ็อบเจ็กต์ นอกจากนี้ยังไม่มีจุดบนสองลูป ลองทำสิ่งนี้:

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

ใช้ deepEquals () ของ 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));

ผลลัพธ์: deepEquals () คืนค่าจริง