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

一旦输入 A 或 B,我怎样才能让它停止循环。如果我删除 While 循环,我可以让 @answer 成为 A 或 B,但是一旦我添加它,无论我输入什么,它都会不断循环。

4

3 回答 3

1

我觉得你的 WHILE 条件不好,不能只说 A || B,也许重复条件?也许像这样?

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

希望能帮助到你。:)

(编辑:甚至可能使用AND (&&)而不是OR (||)?)

于 2013-10-03T19:38:11.587 回答
0

以下方式也将起作用:

unless ["A","B"].include? @answer
于 2013-10-03T19:37:38.847 回答
0

我更喜欢

@answer = nil 
until @answer == 'A' || @answer == 'B' do
  @answer = gets.chomp
end
于 2013-10-03T21:00:29.227 回答