После запуска этой программы она возвращает только "промах".

Что я сделала не так?

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
1
String#to_i игнорирует все после числа. Нет необходимости в chomp.
 – 
Jörg W Mittag
5 Дек 2014 в 04:11

Вы читаете строку из $stdin:

+ Изменить

x = gets.chomp

К

x = gets.chomp.to_i

Надеюсь это поможет

Справка

Строка # to_i

3
ptierno 5 Дек 2014 в 03:40
2
String#to_i игнорирует все после числа. Нет необходимости в chomp.
 – 
Jörg W Mittag
5 Дек 2014 в 04:11