2013-07-01 58 views
0

下面的ruby代码没有按预期工作。它似乎没有识别1..3范围,并且仅读取else条件。如果我给一个数字而不是一个范围,它虽然工作。不知道我哪里错了。输入字符串与数字范围不匹配

print "Enter your cost: " 
cost = gets.chomp 
case cost 
when 1..3 
puts "inexpensive" 
when 3..5 
puts "affordable" 
else puts "no comments" 
end 
+0

'不按预期工作=>您期望什么? – sawa

回答

0

您从gets获得的输入始终是一个字符串,因此它永远不会匹配数字范围。要将其转换为整数,这样做:

cost = gets.to_i 

您可以直接把它放在case语句,像这样

case gets.to_i 
+0

谢谢!我在猜测。有没有办法我可以将其转换为整数?我尝试了整数(成本)方法,但不起作用。我可以说 - 当整数[成本] 1..3 – sasi

+0

整数(成本)'应该工作,只要它不包括额外的字符。 'String#to_i'更灵活,适用于这种情况。 – sawa

1

你试图去匹配一个整数范围内的字符串。这是行不通的。创建一个整数。

cost = gets.chomp.to_i 
+0

非常感谢你的工作!我一直在挣扎很久 - 我是编码新手。 – sasi