该程序打印第一个语句,并在我输入数字(例如"5")后退出,而不打印任何其他内容。根据我在case
语句中输入的逻辑,我希望它输出"你不是成年人:("对于 5.其他低于 120 的值也无法按预期工作。
怎么了?
print "Enter you age "
age = gets.chomp
if age.to_i<120
case age.to_i
when age.to_i<18
puts "You're not an adult :("
puts "Sorry"
when age.to_i>18
puts "You are now an adult!"
puts "phew"
end
end
试试这个。请注意,我已经从 case
语句中删除了age.to_i
:
print "Enter you age "
age = gets.chomp
if age.to_i<120
case
when age.to_i<18
puts "You're not an adult :("
puts "Sorry"
when age.to_i>18
puts "You are now an adult!"
puts "phew"
end
end
编辑
需要一点解释。
当你写这个的时候:
case foo
when "bar"
...
这实质上意味着:
if "bar" === foo
...
所以你的代码有点像这样:
if age.to_i<18 === age.to_i
...
这没有多大意义。如果你只是写case
后面什么都没有,那么它更像是一个普通的if
语句。例如
case
when foo === "bar"
...
大致表示
if foo === "bar"
...
这就是你想要的。我希望这有所帮助!
这是一个清理的版本:
print "Enter you age "
age = gets.chomp.to_i
case age
when 0..18
puts "You're not an adult :("
puts "Sorry"
when 18..120
puts "You are now an adult!"
puts "phew"
else
puts "I think you're lying!"
end
将所有这些折叠到一个case
语句中并使用范围可以使正在发生的事情更加清晰。