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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在用户在java中输入正确的输入之前,如何从用户那里获得输入?相关的知识,希望对你有一定的参考价值。

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

//Show Menu Of Languages
    System.out.print("Welcome To iHome Application 
 
 Pleas Choose You're Wanted Language" +
            "(Enter Number Of Language Or Type You're Wanted Language) : 
 1)English 
 or 
 2)Persian " + "
 
");
    //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("
 Pleas Enter An Option From Above Menu. Try Again. 
");
        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.");
        }

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

什么是我的问题?

答案

在while循环中,检查OR(||)。用AND替换它(&&

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

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

以上是关于在用户在java中输入正确的输入之前,如何从用户那里获得输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止在用户输入反应之前从 API 加载数据?

如何在 Java 中添加并将其存储在数组中之前检查和输入?

如何告诉用户他们之前使用 indexOf 输入了一个字母? JAVA

如何在不完整的 Django 表单字段中获取用户输入?

如何在使用Java 8运行时在流中获取新用户输入

如何从java控制台获得用户输入?