我有下面的循环,它的行为对我来说似乎很奇怪。
这是BlackJack游戏的一部分,它要求用户输入赌注。如果赌注超过了用户拥有的金额,那么它就会循环回来。
c
在此等于500:
b = 90000000
until b < c
puts "You have $" + c.to_s + "."
puts "How much do you want to bet? "
b = gets.to_i
if b < c
@bet = gets.to_i
else
puts "Nice try."
end
end
我将b
设置为一个较大的数字,以确保循环至少运行一次。当我开始循环并输入高于我所拥有的数字的数字时,它会按预期进行,并循环要求下注。但是,当我最终输入有效金额时,循环会被卡住。
然后,当我将b
设置为足够低的数字,以便跳过until
时,一切正常。
有谁知道为什么我的循环会粘住?
答案 0 :(得分:3)
它不是'坚持',它在等待IO。
您在gets
区块内第二次拨打if b < c
。你的循环正在执行最后一次,你输入一个值&lt; c,输入了if块,程序正在等待您阅读更多输入。
将内部if块更改为
if b < c
@bet = b
else
puts "Nice try."
end
你应该没事。