我正在编写一个Pit评分系统,并且有一段代码看起来像这样:

while(highestConverted<scoreConverted||highestConverted!=scoreConverted)


无论scoreConverted或highestConverted的值如何,它将始终返回true并重复其中的代码。我认为这并不重要,但是使用Integer.parseInt从扫描仪变量转换的值或整数都可以。我没有Java的丰富经验,但我确实了解一些基本知识。

最佳答案

考虑您的代码:

while(highestConverted<scoreConverted||highestConverted!=scoreConverted)


假设highestConverted = 5scoreConverted = 2

highestConverted <  2 =  5 < 2  -> false
highestConverted != 2 -> 5 != 2 -> true

false || true = true.


因此,while循环将始终重复。

它应该是

while(highestConverted<scoreConverted && highestConverted!=scoreConverted)


或更好

while(highestConverted<scoreConverted)


highestConverted<scoreConverted隐式包含highestConverted!=scoreConverted,因为它将在scoreConverted - 1处停止。

07-26 07:53