我打算检查给定的输入是否是整数。 gets.chomp
以字符串形式输入,然后使用to_i
将其转换为整数。如果我输入abcd
并使用class
或is_a(Integer)
进行检查,则总是说它是一个整数。
x = gets.chomp.to_i
if x.is_a?(Integer)
puts "It's an integer"
else
puts "It's a string"
end
如何检查输入是整数还是字符串?
答案 0 :(得分:5)
由于您使用.to_i
将输入转换为整数,x.is_a?(Integer)
始终为true
,即使您的字符串不包含任何数字。有关.to_i
行为的详情,请参阅this answer。
使用Integer()
代替.to_i
转换您的输入。
Integer()
在无法将输入转换为整数时抛出,因此您可以执行以下操作:
input = gets.chomp
x = Integer(input) rescue false
if x
puts "It's an integer"
else
puts "It's a string"
end
答案 1 :(得分:2)
您可以使用正则表达式:
boolean = gets.match?(/\A\d+\n\z/)
答案 2 :(得分:0)
另一种方法可能是:
x = gets.chomp
x === x.to_i ? "It's an integer" : "It'a a string"