Строка, возвращаемая получателями, будет иметь в конце строку. Для ее удаления используйте String#chomp
(т.е. state_abbreviation = get.chomp
).
PS: Ваш код выглядел бы намного чище (IMHO), если бы вы использовали регистр, когда вместо if-elsif-elsif.
Мне не хватает очков, чтобы прокомментировать, но я думаю, что идея Криса Джестера-Янга с гашишем очень аккуратная.
statehash = { "RI" => "Rhode Island", "NC" => "North Carolina" }
print "Enter your state abbreviation: "
state_abbreviation = gets.chomp.upcase
puts statehash[state_abbreviation]
этот код намного лаконичнее и понятнее, чем кучка эльсифов, и короче, чем кейс. Он также позволяет создавать хэш объектов состояния, где ключом является аббревиатура, а значением - объект.
Перед большим блоком, скажем:
state_abbreviation.chomp!
В качестве альтернативы отличному предложению sepp2k использовать case
, рассмотрим возможность создания хэша с сокращениями состояния в качестве ключей.
получает
возвращает то, что вы набрали новой строкой. Попробуйте state_abbreviation = get.chomp
Вы используете get, и, вероятно, ваш shell/input добавляет символ новой строки (\n) в конец строки, и, возможно, вы захотите использовать оператор регистра:
пример:
print("Enter your state abbreviation: ")
state_abbreviation = gets.strip
case state_abbreviation
when "NC" then puts("North Carolina")
when "SC" then puts("South Carolina")
# ...
else puts("You have enter wrong abbreviation")
end