我正在尝试编写一个 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 语句的条件每次都计算为真并进入循环体,因为我在变量中以空字符串开始。
当我在回答问题的提示中输入一些随机且无效的东西(如“X”)时,循环会继续进行,因为 while 语句应该仍然为真。
但是当我输入“Y”、“y”、“N”或“n”来回答这个问题时,循环仍然继续,逻辑上它应该停止,因为 while 条件应该是 false。
谁能告诉我 while 语句的语法哪里做错了?还是我在变量中存储用户输入的方式有问题?
最佳答案
你的逻辑有问题。如果answer
是Y
,那么显然它不等于N
,所以满足循环条件。
您可以通过在您的条件中使用“和”来解决此问题:
(!answer.eql?("Y") && !answer.eql?("N"))
关于ruby - 我如何编写 while 循环来检查 Ruby 中的 "Y"或 "N"字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48717500/