Я практикую некоторые вопросы кодирования в Ruby на HackerRank, и у меня возникают проблемы с пониманием, почему я получаю дополнительную пустую строку вывода.Пользовательский ввод (с консоли) выглядит следующим образом:
3
sam 99912222
tom 11122222
harry 12299933
sam
edward
harry
Первое число указывает, сколько пар значений ключей необходимо добавить в хеш телефонной книги.Следующие несколько строк (указанных первым числом) - это те пары ключей-значений, которые нужно добавить.А остальные запросы - это ключи, которые я ищу.Я уже написал весь код и протестировал его;он успешно добавляет пары ключ-значение в хеш с именем phoneBook и также успешно печатает правильные значения, когда я ищу в хэше с заданными ключами.Тем не менее, я получаю дополнительную пустую строку в конце, и я не могу понять, почему.Ниже мой код:
entries = []
num_entries = gets.to_i
num_entries.times do | input |
entries << gets.chomp
end
phoneBook = {}
entries.each do | entry |
str = entry.split
phoneBook[str[0]] = str[1].to_i
end
name_str = gets.chomp
while name_str != ""
if phoneBook.has_key?(name_str)
puts name_str + "=" + phoneBook[name_str].to_s
else
puts "Not found"
end
name_str = gets.chomp
end
И это сообщение об ошибке, которое я получаю:
Solution.rb:23:in `<main>': undefined method `chomp' for nil:NilClass (NoMethodError)
Я понимаю, что ошибка, вероятно, происходит из-за попытки выполнить код на этомпустая строка вывода, которую я получаю, но я подумал, что как только пользовательский ввод будет пустым, он выйдет из цикла while.