Java-询问用户是否要继续(仅接受“ y”或“ n”)

时间:2018-09-20 21:16:19

标签: java

这是我第一次在此处发布信息,因此,如果其格式不正确,我深表歉意。我的应用程序旨在要求用户输入我的一个房间名称,该应用程序将输出有关该房间的信息。然后,它应该询问用户是否要继续。我希望它只能接受“ y”或“ n”。当它询问我是否要继续时,我输入的字母不是“ y”或“ n”,并且正确地要求我输入可接受的答案。但是,如果我确实输入“ y”或“ n”,则它的作用就好像我一次输入了一个不可接受的答案,然后执行了应做的事情。任何帮助都非常感谢。

package roomateapp;

import java.util.Scanner;


public class RoomateApp {


public static void main(String[] args) {



    //Initialize scanner to take in roomate name
    Scanner sc = new Scanner(System.in);
    String cont = "y";
    while (cont.equalsIgnoreCase("y")) {

//CODE HERE BUT NOT SHOWN

        //Ask to continue
        System.out.println("Would you like to continue? (y/n)");
        cont = sc.next();
        System.out.println();

        if (!cont.equalsIgnoreCase("y") || !cont.equalsIgnoreCase("n")) {
            while (!cont.equalsIgnoreCase("y") || !cont.equalsIgnoreCase("n")) {

                System.out.println("Please enter 'y' or 'n'");
                System.out.println("Would you like to continue? (y/n)");
                cont = sc.next();
                if (cont.equalsIgnoreCase("y") || cont.equalsIgnoreCase("n")) {
                    break;
                }
            }
        } else {
        }

        System.out.println();
    }
}
}

2 个答案:

答案 0 :(得分:2)

如@shmosel在其评论中所述:

if (!cont.equalsIgnoreCase("y") || !cont.equalsIgnoreCase("n")) {

将始终为真-使用布尔逻辑,我们可以说它等同于

if (!(cont.equalsIgnoreCase("y") && cont.equalsIgnoreCase("n")))

这可能更清楚地表明它始终是真实的。

您可能想检查它是否不是 “ y”还是“ n”,您可以这样写:

if (!(cont.equalsIgnoreCase("y") || cont.equalsIgnoreCase("n")))

或等效地:

if (!cont.equalsIgnoreCase("y") && !cont.equalsIgnoreCase("n"))

如果您想了解更多有关上述原因的信息,请查看De Morgan's Laws上的Wikipedia页面(与这种特定的等效性有关),或者更普遍地查看Logical Equivalence上的页面

答案 1 :(得分:0)

为什么不检查自己是否拥有“ y”或“ n”,而不检查自己没有的东西?

我会将let clusters = []; let markers = []; for(i = 0; i < Top.length; i++){ clusters.push(Top[i]._childClusters); } for(x = 0; x < clusters.length; x++){ markers.push({x: clusters[x]._markers}); } for(z = 0; z < markers.length; z++){ // do something with the marker. } 初始化为cont或其他一些标记值,然后在null保持不变的情况下循环。一旦您在循环内确认用户给定的值是“ y”或“ n”,我就只为cont分配一个值。

cont