以下是我的代码片段:
while (true){
System.out.println("---Welcome to the Shape Machine---");
System.out.println("Available options:");
System.out.println("Circles");
System.out.println("Rectangles");
System.out.println("Triangles");
System.out.println("Exit");
//asks for selection
String option = console.next();
while (!option.equals("Cirlces") && !option.equals("Rectangles") && !option.equals("Triangles") && !option.equals("Exit")){
System.out.println("#ERROR Invalid option. Please try again.");
break;
}
switch (option) {
case "Circles": {
我有一个菜单设置,当用户输入任何不是其中一个选项时,它应该打印出错误信息并将用户带回菜单。这按预期工作,但如果我输入正确的输入错误消息仍然打印出来,但switch语句运行就像没有错误并进行必要的计算。我尝试在if else语句中使用while true循环,但我仍然遇到了同样的问题。我也尝试使用OR运算符而不是AND运算符,同时使用!=而不是!()。equals方法。我不知道该怎么做才能修复它。任何帮助将非常感谢。
答案 0 :(得分:1)
我会在这里疯狂猜测并试图找出你想要完成的事情。
试试这个:
while (true){
System.out.println("---Welcome to the Shape Machine---");
System.out.println("Available options:");
System.out.println("Circles");
System.out.println("Rectangles");
System.out.println("Triangles");
System.out.println("Exit");
//asks for selection
String option = console.next();
switch (option) {
case "Circles":
//do something
break;
case "Rectangles":
break;
case "Triangles":
break;
case "Exit":
break;
default:
System.err.println("#ERROR Invalid option. Please try again.");
}
//now you can either put a flag or change the code to a DO..While
//depending on if you want to re-execute after each option..
}
如果你想要一个if语句,你会想做(跟随你的版本):
if (!option.equals("Cirlces") && !option.equals("Rectangles") && !option.equals("Triangles") && !option.equals("Exit")){
//print the error, then continue
}
或者,更容易阅读
if( ! ( (option.equals("Circles") || option.equals("Rectangles") || option.equals("Triangles") || option.equals("Exit") ) ){
//print the error, then continue
}
另外请确保您正在阅读正确的值,尝试将其打印出来并进行检查。
如果这不起作用,则您提供的代码中必定存在错误,在这种情况下请发布MCVE。