gets
прочитает и вернет строку ввода
gets
, используемую в условии while
, прочитает строку, проверит ее по nil
и продолжит выполнение.
Таким образом, вы просто игнорируете всевторая (первая, третья) строка вашего ввода.
Вместо этого сохраните ввод в переменную и сделайте ли вы логику со значением, сохраненным в этой переменной
input = ""
line = gets
while line != nil
input << line
line = gets
end
Как правильно указал @Cary Swoveland, gets
никогда не вернет nil
, и вы получите бесконечный цикл.
gets
возвращает заданное значение с включенной «новой строкой», вы можете избавиться от новой строки (gets.chomp
) и сделать ваш код проще (возможно, более читабельным)
input = ""
line = gets.chomp
until line.empty?
input << line
line = gets.chomp
end