В общем, один вариант:
10.class == Integer # => true
10.5.class == Float # => true
Или другое:
10.is_a? Integer # => true
10.5.is_a? Float # => true
Но так как ввод является строкой, это может быть возможным решением для проверки, является ли строка целым числом или числом с плавающей запятой, обезьяна исправляет класс String
:
module StringFloatOrInteger
def integer_or_float?
begin !!Float(self) rescue false end
end
def integer_not_float?
begin !!Integer(self) rescue false end
end
def integer?
integer_not_float? & integer_or_float?
end
def float?
!integer_not_float? & integer_or_float?
end
end
String.include StringFloatOrInteger
"home".integer? # => false
"home".float? # => false
"10".integer? # => true
"10".float? # => false
"10.5".integer? # => false
"10.5".float? # => true
В вашем случае вы можете использовать вот так, запрашивая n раз для ввода
def get_integer
2.times do # or whatever times
puts "Please enter an integer: "
input = gets.chomp
return input.to_i if input.integer?
end
return nil # or whatever
end
number = get_integer