Java .equals方法无法按预期工作

时间:2019-05-08 02:28:01

标签: java string equals

在为k最近邻居算法编写一些代码时,我试图使用.equals方法将String(代表一个类)与该类可能存在的两种可能性进行比较。在这种情况下,班级只会是“是”或“否”。

for (int i=0;i<kValue;i++) {
    String classString = nearestSet.firstEntry().getValue().get(nearestSet.firstEntry().getValue().size()-1);
    if (classString.equals("yes")) 
        yes++;
    else if (classString.equals("no")) 
        no++;
    else 
        System.out.println("what!"+classString);
    nearestSet.remove(nearestSet.firstKey());
}

您可以在这里看到,如果String类既不是“是”也不是“否”,则程序将输出“ what!”。加上类String。

当我在具有多个不同测试数据集的自己的SDK(Eclipse)上运行该程序时,就没有问题,并且“什么!”行永远不会打印。但是,当我将代码提交给我的大学的自动代码标记程序PASTA时,出现以下错误:

  

无效的输出行:“是!是”

     

无效的输出行:“是!是”

     

无效的输出行:“什么!不”

     

无效的输出行:“什么!不”

因此,可以看出String类是'yes'还是'no',但是由于某种原因,它没有在if条件中传递任何.equals方法?

我知道这可能与代码标记程序有关,在这种情况下,没有多少人可以提供帮助。但是我想知道是否有其他方法使.equals不适用于(看起来是)相同的两个字符串?请注意,测试字符串中没有多余的空格或其他任何字符。

谢谢。

0 个答案:

没有答案