如何编写一个while循环来检查" Y"或" N" Ruby中的角色?

时间:2018-02-10 05:15:26

标签: ruby

我尝试编写一个while循环,强制我的用户通过输入" Y"来确认选择。或者" N":

answer = ""

while (!answer.eql?("Y") || !answer.eql?("N"))

    puts "Do you wish to continue? ('Y' or 'N')"
    answer = gets.chomp.upcase

end

while语句的条件求值为true并且每次进入循环体,因为我从变量中的空字符串开始。

当我输入随机和无效的内容时,如" X"在响应问题的提示中,循环继续,因为while语句应该仍然是真的。

但是当我进入" Y"," y"," N"或" n"在回答这个问题时,循环仍然继续,逻辑上它应该停止,因为while条件应该是假的。

有人能告诉我在我的while语句的语法中我做错了什么吗?或者我是如何将用户输入存储在变量中的?

2 个答案:

答案 0 :(得分:3)

您的逻辑中存在错误。如果answerY,那么显然它不等于N,因此符合循环条件。

您可以使用'和'来解决此问题。在你的条件下:

(!answer.eql?("Y") && !answer.eql?("N"))

答案 1 :(得分:2)

替代解决方案:

answer = ""

until ["Y","N"].include? answer

    puts "Do you wish to continue? ('Y' or 'N')"

    answer = gets.chomp.upcase

end