【发布时间】:2014-02-21 14:18:51
【问题描述】:
我有下面的循环,它的行为对我来说似乎很奇怪。
这是二十一点游戏的一部分,它要求用户输入赌注。如果赌注大于用户拥有的金额,则循环返回。
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 时,一切正常。
有人知道为什么我的循环卡住了吗?
【问题讨论】:
-
反转你的
until的逻辑。而是使用while b >= c或简单的loop和break来测试您的状况。until否定逻辑,使其更难阅读和理解。它是 Ruby 的一部分,但由于这个原因很少使用。
标签: ruby ruby-1.9.3