Ruby,随机数生成器和if语句

时间:2014-12-05 00:36:32

标签: ruby if-statement random

运行此程序后,它只会返回" miss"

我做错了什么?

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

感谢

2 个答案:

答案 0 :(得分:4)

gets.chomp会生成 String 。将字符串与具有相等性的数字进行比较永远不会是true,因为它们是完全不同的类型。

使用String#to_i

,您应该在比较之前将x转换为整数
x = gets.chomp.to_i

另外,while 1==1有点奇怪。这更具可读性:

while true
  method
end

甚至更好:

loop { method }

答案 1 :(得分:3)

您正在阅读$stdin的字符串:

更改

x = gets.chomp

x = gets.chomp.to_i

希望这有帮助

参考

String#to_i