ruby - 我如何编写 while 循环来检查 Ruby 中的 "Y"或 "N"字符?

标签 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 语句的条件每次都计算为真并进入循环体,因为我在变量中以空字符串开始。

当我在回答问题的提示中输入一些随机且无效的东西(如“X”)时,循环会继续进行,因为 while 语句应该仍然为真。

但是当我输入“Y”、“y”、“N”或“n”来回答这个问题时,循环仍然继续,逻辑上它应该停止,因为 while 条件应该是 false。

谁能告诉我 while 语句的语法哪里做错了?还是我在变量中存储用户输入的方式有问题?

最佳答案

你的逻辑有问题。如果answerY,那么显然它不等于N,所以满足循环条件。

您可以通过在您的条件中使用“和”来解决此问题:

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

关于ruby - 我如何编写 while 循环来检查 Ruby 中的 "Y"或 "N"字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48717500/

相关文章:

ruby - Applescript/Scripting Bridge 中的 QuickTimeX

ruby - RMagick - 如何将网格图像裁剪成图像数组?

ruby - 在 Vagrant 盒子内使用 librarian-puppet - 为什么 puppetlabs/mysql 安装失败?

ruby-on-rails - 使用 curb 获取 "error reading X.509 key or certificate file",而 curl 使用相同的证书,没有错误

ruby 习语 : predicates and the conditional operator

ruby-on-rails - ruby 在heroku中的cpu和内存使用情况

ruby-on-rails - 转义正则表达式中的特殊字符?

ruby-on-rails - 从字符串中捕获字符

ruby-on-rails - 与现有对象嵌套?

ruby - 我如何在 ruby​​ 中使用 map 方法调用方法链?