我尝试编写一个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语句的语法中我做错了什么吗?或者我是如何将用户输入存储在变量中的?
答案 0 :(得分:3)
您的逻辑中存在错误。如果answer
为Y
,那么显然它不等于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