【问题标题】:Checking an input in Java [duplicate]检查Java中的输入[重复]
【发布时间】:2016-10-26 03:36:41
【问题描述】:

首先让我先说我是 Java 新手,我不是专业程序员,但我已经用 VBA 编写了几个宏。

我正在努力帮助我儿子完成高中 Java 作业。在分配中有一个点,用户有一个 Y 或 N 输入。我不知道为什么这段代码不起作用。

            // Wait for user to press Y or N
        do{
            playAgain = input.next();
        } while (!playAgain.equalsIgnoreCase("n") || (!playAgain.equalsIgnoreCase("y"));

如果我只检查一个条件,它就可以工作。

【问题讨论】:

    标签: java string input compare


    【解决方案1】:

    只要输入不等于n/N y/Y,您的逻辑就会继续循环。这对于 yes 和 no 输入总是正确的,实际上 all 输入。如果输入 no,第一个条件将失败,但第二个条件为真,反之亦然。

    要解决这个问题,您应该&& 将两个条件一起使用:

     do {
         playAgain = input.next();
    } while (!playAgain.equalsIgnoreCase("n") && (!playAgain.equalsIgnoreCase("y"));
    

    【讨论】:

      【解决方案2】:

      ||表示或。所以,A ||如果 A 为真或 B 为真,则 B 为真。任何或条件的工作方式如下:如果第一部分为真,则不评估第二个条件。如果 first 为 false,则计算 second。如果其中一个为真,则结果为真。

      在您的 do while 循环中:如果“y”等于您的输入,则 !playAgain.equalsIgnoreCase("n") 将为真,反之亦然。无论哪种方式,任何一个条件在 while 循环条件中都将始终为真,因此循环将永远进行。上面给出的答案中提到了解决方案。 (使用 && 代替 ||)

      【讨论】:

        猜你喜欢
        • 2013-11-29
        • 2013-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-19
        • 2016-11-19
        • 2017-01-31
        • 1970-01-01
        相关资源
        最近更新 更多