此程序打印第一个语句,并在输入数字后退出,例如" 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
答案 0 :(得分:4)
试试这个。请注意,我已从age.to_i
声明中删除case
:
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
语句。 E.g。
case
when foo === "bar"
...
大致意味着
if foo === "bar"
...
这就是你想要的。我希望有所帮助!
答案 1 :(得分:0)
这是一个清理过的版本:
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
语句并使用范围可以更清晰地发生这些事情。