这段代码取一系列数字,然后打印出输入的最高数字。据推测,代码中存在一个缺陷,对于某个数字序列,该缺陷无法产生正确的输出。然而,我找不到任何一系列没有显示正确输出的数字,也看不到代码中的问题。
int m = 0
boolean finished = false
while (!finished) {
print "Enter another number (0 to finish): "
String s = System.console().readLine()
int num = Integer.parseInt(s)
if (num != 0) {
if (num > m) {
m = num
}
} else {
finished = true
}
}
println m
你回答说自己——负数是罪魁祸首。这是一个固定版本:
Integer m = null
boolean finished = false
while (!finished) {
print "Enter another number (0 to finish): "
String s = System.console().readLine()
Integer num = Integer.parseInt(s)
if (num != 0) {
if (num > m) {
m = num
}
} else {
finished = true
}
}
println (m == null ? "No input provided" : m)