【问题标题】:Continous Looping with Nested Loop使用嵌套循环进行连续循环
【发布时间】:2013-10-03 19:35:58
【问题描述】:

我尝试执行的代码示例如下:

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,但是一旦我添加它,无论我输入什么,它都会不断循环。

【问题讨论】:

标签: ruby while-loop


【解决方案1】:

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

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

希望对您有所帮助。 :)

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

【讨论】:

  • 应该是&& 而不是||
  • 是的,我发表评论后也想到了这一点:)
【解决方案2】:

下面的方法也可以:

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

【讨论】:

  • @MichaelBerkowski 我尝试了 Arup 的答案并且它有效,但 while 表达式仍然不是真的正确。它表现为while true,这就是为什么需要break
【解决方案3】:

我更喜欢

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

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2014-03-20
    • 2021-12-11
    • 1970-01-01
    • 2015-12-05
    • 2015-06-05
    相关资源
    最近更新 更多