print "Enter your age in Numbers:"
user_input = gets.chomp
if user_input > 21 && user_input < 30
puts "XYZ"
elsif user_input > 31 && user_input < 40
puts "YZX"
elsif user_input > 40
puts "ZXY"
else
puts "Golden Age!"
end
答案 0 :(得分:0)
问题是gets.chomp
返回一个字符串
您可以使用String#to_i
:gets.chomp.to_i
<小时/> 您可以使用
between?
:进一步提高代码的可读性
print "Enter your age in Numbers:"
number = gets.chomp.to_i
if number.between?(22, 29)
puts "XYZ"
elsif number.between?(32, 39)
puts "YZX"
elsif number > 40
puts "ZXY"
else
puts "Golden Age!"
end
甚至更好 - case
声明:
print "Enter your age in Numbers:"
number = gets.chomp.to_i
case number
when (22...30) then puts "XYZ"
when (32...40) then puts "YXZ"
when (40..Float::INFINITY) then puts "ZXY"
else puts "Golden Age!"
end
<小时/> 注意:我使这些范围与原始解决方案兼容,但请注意,其中存在一些空白(例如31个)。
答案 1 :(得分:0)
您可以比较正确定义<=>
的对象,但无法将字符串对象与fixnum对象进行比较。如果您打算以整数进行比较,则需要将输入转换为整数。此外,(假设您只获得可以转换为整数的输入),您的条件是多余的。你可能错误地使用&&
。它可以这样写:
print "Enter your age in Numbers:"
user_input = gets.to_i
if user_input < 20 or [20, 21, 30, 31, 40].include?(user_input)
puts "Golden Age!"
elsif user_input < 30
puts "XYZ"
elsif user_input < 40
puts "YZX"
else
puts "ZXY"
end