После запуска этой программы она возвращает только "промах".
Что я сделала не так?
def method
print "Enter number from 0 to 4"
x = gets.chomp
num = rand(5)
if x == num
puts "hit"
else
puts "miss"
end
end
while 1==1
method
end
Благодарность
0
ChatNoir
5 Дек 2014 в 03:36
2 ответа
Лучший ответ
gets.chomp
приводит к строке . Сравнение строки с числом с равенством никогда не будет true
, потому что это совершенно разные типы.
Перед сравнением необходимо преобразовать x
в целое число, используя String#to_i
:
x = gets.chomp.to_i
Кроме того, while 1==1
немного странно. Это более читабельно:
while true
method
end
Или даже лучше:
loop { method }
4
August
5 Дек 2014 в 03:41
Вы читаете строку из $stdin
:
+ Изменить
x = gets.chomp
К
x = gets.chomp.to_i
Надеюсь это поможет
Справка
3
ptierno
5 Дек 2014 в 03:40
2
String#to_i
игнорирует все после числа. Нет необходимости в chomp
.
Jörg W Mittag
5 Дек 2014 в 04:11
Похожие вопросы
Новые вопросы
ruby
Ruby - это многоплатформенный динамический объектно-ориентированный интерпретируемый язык с открытым исходным кодом. Тег [ruby] предназначен для вопросов, связанных с языком Ruby, включая его синтаксис и его библиотеки. Вопросы Ruby on Rails должны быть помечены [ruby-on-rails].
String#to_i
игнорирует все после числа. Нет необходимости вchomp
.