2016-09-26 2 views
1

Я пытаюсь изучить ruby, и мне было поручено создать простую программу, которая захватывает пользовательский ввод, а затем использует оператор elsif, чтобы дать возможные 3 разных ответа. Вот мой код:Строка не может быть принудительно введена в Fixnum Ruby

print "What is your birth year?" 
year = gets.chomp 
age = 2016 - year 
if age >= 40 
    puts "You're old!" 
elsif age.between?(25, 39) 
    puts "You aren't too old!" 
else 
    puts "You're just a baby!" 
end 

Однако, я получаю «Строка не может быть принужден к Fixnum»

Я не помню, на уроках делать что-то, что я делаю для «возраста» переменная, поэтому я мог ошибаться, но я также не мог найти ответ на уроках или в Интернете. Любая помощь будет принята с благодарностью!

+0

Вы обнаружите, что это облегчит вашу кодировку, если вы правильно сохраните свой код. Любой достойный текстовый редактор сделает это легко. В своем коде обратите внимание, что ваш 'if age> = 40' имеет отступ, вместе с остальной частью связанного блока, но закрытие' end' не является. В коде с более сложным вложением или с определениями классов или методов, которые затрудняли бы отладку. –

ответ

1

Помните, что gets возвращает строковое значение, а в строках Ruby и числовых значениях - совершенно разные вещи. Некоторые другие языки будут принуждать их по мере необходимости, например PHP, Perl или JavaScript, но Ruby этого не делает.

Чтобы сделать эту работу:

year = gets.chomp.to_i 

Хотя технически to_i в одиночку, как правило, достаточно.

+0

О, боже мой. Сейчас я не могу поблагодарить вас. Это сводило меня с ума! –

+0

Это немного недоумение для тех, кто привык к автоматическому преобразованию. В Ruby land '' 5 "== 5' возвращает' false'. Также '0' логически верно, так что следите! – tadman

Смежные вопросы