Как проверить целое число в ruby - PullRequest
0 голосов
/ 10 февраля 2020

Я спрашиваю пользователя о его или ее возрасте, я использую gets метод для этого,

Это то, что я сейчас делаю

  age = gets.chomp.to_i 
  puts age   

Моя проблема, когда пользователь введите 12a что-то, затем также потребуется ввод и сохранение 12 в поле возраста, я просто хочу только целые числа.

Как я могу это сделать?

Ответы [ 2 ]

4 голосов
/ 10 февраля 2020

Возможно что-то вроде этого:

begin
  age = Integer(gets)
rescue ArgumentError => e
  puts "Only integers allowed!"
  retry
end

Integer(gets) вернет целое число для чего-то вроде "12\n", но поднимет ArgumentError для "12a\n".

rescue ArgumentError спасет только от того, что ArgumentError напечатает сообщение об ошибке и что retry вернет вас к begin ...

1 голос
/ 10 февраля 2020

Мы получили что-то новое для Ядро :: Целое число в Ruby v2.6!

age = loop do
  print "How old are you?: "
  str = gets.chomp
  age = Integer(str, exception: false)
  if age.nil?
    puts "That's not an integer. Try again"
  elsif age < 0
    puts "Negative integers are not permitted. Try again"
  elsif age < 30
    puts "'Cmon, you've got to be at least 30. Try again"
  else
    break age
  end
end

Возможный диалог:

How old are you?: cat
That's not an integer. Try again
How old are you?: -44
Negative integers are not permitted. Try again
How old are you?: 28
'Cmon, you've got to be at least 30. Try again
How old are you?: 35
  #=> 35 
age
  #=> 35 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...