我正在编写一个Pit评分系统,并且有一段代码看起来像这样:
while(highestConverted<scoreConverted||highestConverted!=scoreConverted)
无论scoreConverted或highestConverted的值如何,它将始终返回true并重复其中的代码。我认为这并不重要,但是使用Integer.parseInt从扫描仪变量转换的值或整数都可以。我没有Java的丰富经验,但我确实了解一些基本知识。
最佳答案
考虑您的代码:
while(highestConverted<scoreConverted||highestConverted!=scoreConverted)
假设
highestConverted = 5
和scoreConverted = 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
处停止。