Do-while 循环不适用于使用 .equals 方法进行验证 (Java) [closed]

Do-while loop doesn't work for validating using a .equals method (Java) [closed]

提问人:Rohith 提问时间:11/6/2022 更新时间:11/6/2022 访问量:63

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

去年关闭。

对于作业,我必须制作一个程序来查看用户输入是否包含三个字母中的任何一个:r、c 或 p。如果它是错误的,我必须继续要求用户重新输入,直到用户输入正确的答案。[Please ignore the code in the comments]

我尝试使用 do while 循环进行验证,我自己测试了它,但不是只在满足条件时返回无效的错误消息,而是无论用户输入是什么,它都会返回它。do 语句甚至忽略了“有效输入”,无论如何都会打印无效消息。[enter image description here]

java.util.scanner 用户输入 do-while

评论

0赞 Progman 11/6/2022
欢迎来到 Stack Overflow。请参加导览,了解 Stack Overflow 的工作原理,并阅读如何提问,了解如何提高问题的质量。然后编辑您的问题,将您的源代码作为可操作的最小可重现示例,该示例可以由其他人编译和测试。提问时请不要上传代码/错误的图片。
0赞 Progman 11/6/2022
你可能想研究一下所谓的“德摩根定律”,见 stackoverflow.com/questions/20043664/de-morgans-law

答:

1赞 HKTE 11/6/2022 #1

你需要在这里使用while循环,而不是do..而。 一个做..while loop 至少运行一次其正文,然后检查条件 - 因此无论如何它都会至少显示一次错误消息。 相反,请使用 while 循环,它首先检查条件:

while (input does not contain r, c or p) {
  // Show error, ask for new input
}
// Input is now valid

评论

0赞 Rohith 11/6/2022
哦,我试过了,但由于某种原因,无论输入如何,错误消息仍然显示。也许我需要更改有关客户代码声明和 System.out.print 语句的顺序。但感谢您的帮助!
3赞 Frederik Tobner 11/6/2022 #2

程序中的主要问题是为循环指定的条件。如果输入不是“c”或不是“r”或不是“p”,循环将继续。但是,如果您的输入是“p”,则输入将始终不是“c”或“r”。您应该用 not an 分隔条件。andor

while (!customerCode.contentEquals("r") && !customerCode.contentEquals("c") && !customerCode.contentEquals("p"));