Я пытаюсь преобразовать значение в целое число, что я здесь делаю неправильно? - PullRequest
1 голос
/ 06 июня 2019

Я просто пытаюсь заставить этот код работать, и я продолжаю получать:

<= ': сравнение строки с 21 не удалось (ArgumentError) </p>

Пожалуйста, скажите мне, что я делаю не так.

Я учусь, и я прошел через каждую итерацию кода, чтобы придумать, как это сделать, я просто не уверен, что сделал неправильно.

puts "How old are you?"
old = gets.chomp

if old <= 21
  return "You are not legally allowed to buy alcohol in the US"
else 
  return "You are legally allowed to buy alcohol in the US"
end

Ответы [ 3 ]

4 голосов
/ 06 июня 2019

Я считаю, что вы должны использовать to_i для преобразования строки в целое число.

2 голосов
/ 06 июня 2019

Попробуйте / улучшите по мере необходимости:

input = gets.chomp

if(val = Integer(input) rescue false)
  val < 21 ? 'Not old enough' : 'The usual martini?'
else
  'You did not provide an age (number)'
end

Он проверяет, является ли вход целым числом, поэтому он учитывает вход, такой как foo.

Hth ...

2 голосов
/ 06 июня 2019

Предыдущий ответ правильный, но более многословный, вот строка, которую нужно изменить в коде:

old = gets.chomp.to_i

Но вы также можете убедиться, что пользователь вводит только целое число, потому что вызов .to_i для нечисловых символов вернет 0.

Возможно, вы захотите посмотреть Принять только числовой ввод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...