这是我的代码:
System.out.println(templist.indexOf(8.14));
if (ds > 8.1000 && ds<8.1500) {
dot = templist.indexOf(8.14);
dot++;
System.out.println(dot);
}
的System.out.println(点);
以下是输出: 1 0
为什么没有点得到2的值?这是一个int。
答案 0 :(得分:0)
结果:
-1
0
如果indexOf()未能在列表中找到双精度值8.14,则可以解释。
一个建议是进行以下诊断更改,以确保您看到的输出确实来自以下代码。
System.out.println("Before if-test = " + templist.indexOf(8.14));
if (ds > 8.1000 && ds < 8.1500) {
dot = templist.indexOf(8.14);
dot++;
System.out.println("Dot = " + dot);
}
在确定根本原因后,对println()调用的上述更改可以恢复为原始代码。
另一种可能性是查看类方法实现。如果indexOf()方法返回的对象具有将负值转换为正值的toString()方法(例如,已实现toString()以将-1转换为1),则将调用toString()方法println()方法。然而,
dot = templist.indexOf(8.14);
可能会返回-1。这可以解释输出:
1
0
希望这会有所帮助。 谢谢!