假设:list = ["be", "be", "is", "not", "or", "question", "that", "the", "to", "to"]
public static void removeDuplicates(ArrayList<String> list) {
for(int i = 0; i < list.size(); i++) {
String s = list.get(i);
for(int j = 0; j < list.size() - 1; j++) {
String s2 = list.get(j);
if(s2.equals(s)); {
list.remove(j + 1);
}
}
}
}
当我调试它时,当 s2 和 s 根本不相等时,s2.equals(s)
似乎总是返回 true。我做错了什么?
最佳答案
删除分号:
if(s2.equals(s)); {
应该是
if(s2.equals(s)) {
编辑:说明:在您的代码中,if
之后有一个空语句,因此无论比较结果如何,都会执行该 block :
public static void removeDuplicates(ArrayList<String> list) {
for(int i = 0; i < list.size(); i++) {
String s = list.get(i);
for(int j = 0; j < list.size() - 1; j++) {
String s2 = list.get(j);
if(s2.equals(s))
; // <-- conditional
{ // <-- unconditional
list.remove(j + 1);
}
}
}
}
关于java - 为什么这个 if 语句总是返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23949978/