我尝试在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.");
}
但总是我的输出是: "请求从上方菜单输入选项。再试一次。"
什么是我的问题?
答案 0 :(得分:2)
在while循环中,检查OR(||
)。将其替换为AND(&&
)
while (!MenuLanguage.equalsIgnoreCase("1") && (!MenuLanguage.equalsIgnoreCase("English")) &&
(!MenuLanguage.equalsIgnoreCase("2")) && (!MenuLanguage.equalsIgnoreCase("Persian")) )
条件不能满足不同输入的OR。如果它是一回事,它将不会是其他3件事。使用和,您可以检查它不是4个条件。