2013-10-03 35 views
0

我想执行的代码示例循环如下:连续型与嵌套循环

puts 'Please choose "A" or "B"?' 
STDOUT.flush 
@answer = gets.chomp.upcase 
while @answer != "A" || "B" 
    puts 'Invalid answer, choose "A" or B"' 
    STDOUT.flush 
    @answer = gets.chomp.upcase 

end 

我怎样才能得到这个停止循环一次,或者输入B中。如果我删除While循环,我可以得到@answer成为A或B,但一旦我补充一点,不断地循环,无论我在键入

+0

你需要'而@answer = “A” && @answer = “B”'! 。运营商的优先顺序很重要。 –

+0

接受这个http://stackoverflow.com/questions/19184727/check-for-similar-values-of-symbols-within-an-array如果它可以帮助你.. –

回答

1

我认为你的WHILE条件不好,你不能只说A || B,也许重复这个条件?也许这样?

while @answer != "A" || @answer != "B" 

希望它有帮助。 :)

(编辑:甚至使用AND (&&)代替OR (||)?)

+1

应该是'&&'而不是'||'。 –

+0

是的,我发布评论后也想到了:) –

+0

谢谢,&&操作员工作 – JonnyPolo

0

以下方式也将工作:

unless ["A","B"].include? @answer 
+0

@MichaelBerkowski我试过Arup的答案,它的工作原理,但'while'表达式仍然不是很正确。它表现为'while true',这就是为什么需要'bre​​ak'的原因。 – lurker

0

我喜欢

@answer = nil 
until @answer == 'A' || @answer == 'B' do 
    @answer = gets.chomp 
end