2013-07-01 5 views
0

Ниже приведен код рубина не работает должным образом. Кажется, он не распознает диапазон 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 gets.to_i 
+0

Спасибо! Я так догадывался. Есть ли способ преобразовать это в целое число? Я попробовал метод Integer (cost), но не работал. Могу ли я сказать - когда Integer [cost] 1..3 – sasi

+0

'Integer (cost)' должен работать так же долго, пока он не включает дополнительные символы. 'String # to_i' является более гибким и подходит в этом случае. – sawa

1

Вы пытаетесь соответствовать строке против целого диапазона. Это не сработает. Сделайте целое число.

cost = gets.chomp.to_i 
+0

спасибо, что это работает! я долго боролся с этим - я новичок в кодировании. – sasi

Смежные вопросы