在为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不适用于(看起来是)相同的两个字符串?请注意,测试字符串中没有多余的空格或其他任何字符。
谢谢。