Этот фрагмент кода принимает ряд цифр, а затем выводит самый высокий введенный. Предполагается, что в коде есть недостаток, который для определенной серии чисел не приведет к правильному выходу. Однако я не могу найти ряд чисел, где правильный вывод не отображается и не может увидеть проблему в коде.Что не так в этом коде (groovy)
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
Ваш код ожидает целое число. Попробуйте несколько очень маленьких чисел с плавающей запятой (меньше 1,0), чтобы увидеть, как они анализируются как целое. – vallismortis
Хорошо, спасибо, что это перепутало мой разум. Однако я предположил, что этот вопрос подразумевает, что возникла проблема, когда были введены целые числа. Можно ли изменить этот код так, чтобы он работал как с целыми числами, так и с числами с плавающей запятой? –
Groovy не мой язык, но я, когда вижу типизированные переменные и пользовательский ввод, который не проверен, мой вопрос: что происходит, когда вход не соответствует объявленному типу? Вы также можете взглянуть на поведение вашего кода с отрицательными номерами. – vallismortis