在用户在java中输入正确的输入之前,如何从用户那里获得输入?

时间:2018-03-01 14:06:46

标签: java loops input while-loop menu

我尝试在java中创建一个菜单并获取用户输入直到用户输入正确的输入,所以我在我的代码中使用了while()。但是当我运行我的代码时,唯一运行的是while循环,我输入输入,甚至是正确的输入。

//Show Menu Of Languages
    System.out.print("Welcome To iHome Application \n \n Pleas Choose You're Wanted Language" +
            "(Enter Number Of Language Or Type You're Wanted Language) : \n 1)English \n or \n 2)Persian " + "\n \n");
    //Get Input From User
    Scanner input = new Scanner(System.in);
    String MenuLanguage = input.next();
    //Get User Language Until User Enter The Right Format
    while (!MenuLanguage.equalsIgnoreCase("1") || (!MenuLanguage.equalsIgnoreCase("English")) ||
            (!MenuLanguage.equalsIgnoreCase("2")) || (!MenuLanguage.equalsIgnoreCase("Persian")) )  {
        System.out.print("\n Pleas Enter An Option From Above Menu. Try Again. \n");
        MenuLanguage = input.next();
    }
        if ((MenuLanguage.equalsIgnoreCase("1")) || (MenuLanguage.equalsIgnoreCase("English"))) {

        } else if ((MenuLanguage.equalsIgnoreCase("2")) || (MenuLanguage.equalsIgnoreCase("Persian"))) {
            System.out.print("Sorry. Persian Language Will Be Available Soon.");
        }

但总是我的输出是:  "请求从上方菜单输入选项。再试一次。"

什么是我的问题?

1 个答案:

答案 0 :(得分:2)

在while循环中,检查OR(||)。将其替换为AND(&&

while (!MenuLanguage.equalsIgnoreCase("1") && (!MenuLanguage.equalsIgnoreCase("English")) &&
            (!MenuLanguage.equalsIgnoreCase("2")) && (!MenuLanguage.equalsIgnoreCase("Persian")) ) 

条件不能满足不同输入的OR。如果它是一回事,它将不会是其他3件事。使用和,您可以检查它不是4个条件。