java - 为什么这个 if 语句总是返回 true?

标签 java string arraylist

假设: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/

相关文章:

c - 访问 strtok 指针时出现段错误

java - 将 ArrayList<String> 转换为 String[]

java - 如果不断改变for循环中的条件会发生什么?

regex - Python字符串匹配

java - 根据计算值对数组进行排序

java - 安卓 7 : Trust anchor for certification path not found

java - 当我使用 @IdClass LinkedHashSet 时包含重复的项目

java - 查找地理区域内的对象

java - Play Framework :[RuntimeException:java.lang.reflect.InvocationTargetException]

c# - 为什么编译器对这行代码有问题呢?