Java开关盒
当我进入子菜单并完成(例如案例1)时,案例完成后,它会自动跳转到主菜单的案例2,有人能告诉我如何停止,因为我希望它只是再次显示主菜单吗Java开关盒,java,switch-statement,Java,Switch Statement,当我进入子菜单并完成(例如案例1)时,案例完成后,它会自动跳转到主菜单的案例2,有人能告诉我如何停止,因为我希望它只是再次显示主菜单吗 switch (choice) { case 1: //finish add passenger System.out.println(" 1 - Add passenger"); System.out.println(mySubMenu.displayMenu()); int subChoice =
switch (choice) {
case 1: //finish add passenger
System.out.println(" 1 - Add passenger");
System.out.println(mySubMenu.displayMenu());
int subChoice = mySubMenu.getChoice();
switch (subChoice) {
case 1:
try {
System.out.println("Please enter the passengers forename");
String aforename = strKeyB.next();
System.out.println("Please enter the passengers surname");
String surname = strKeyB.next();
System.out.println("Please enter the passengers nationality");
String nationality = strKeyB.next();
System.out.println("Please enter the passenger age");
int age = intKeyB.nextInt();
System.out.println(pass1.pasengerAdd(aforename, surname, nationality, age));
break;
} catch (Exception ex) {
System.out.println(ex.toString());
}
case 2:
try {
System.out.println("Please enter the passengers forename");
String onforename = strKeyB.next();
System.out.println("Please enter the passengers surname");
String onSurname = strKeyB.next();
pass1.pasengerAdd(onforename, onSurname);
} catch (Exception ex) {
System.out.println(ex.toString());
}
break;
case 3:
try {
System.out.println("Please enter the passengers forename");
String nnforename = strKeyB.next();
System.out.println("Please enter the passengers surname");
String nnSurname = strKeyB.next();
System.out.println("Please enter the passengers age");
int intAge = intKeyB.nextInt();
pass1.pasengerAdd(nnforename, nnSurname, intAge);
} catch (Exception ex) {
System.out.println(ex.toString());
}//end catch
break;
case 4:
try {
System.out.println("Please enter the passengers forename");
String naforename = strKeyB.next();
System.out.println("Please enter the passengers surname");
String naSurname = strKeyB.next();
System.out.println("Please enter the passengers nationality");
String naNat = strKeyB.next();
pass1.pasengerAdd(naforename, naSurname, naNat);
} catch (Exception ex) {
System.out.println(ex.toString());
}
break;
case 5:
System.out.println(myMenu.displayMenu());
break;
}//end sub menu switch
case 2:
try {
System.out.println(" 2 - Delete Passenger");
System.out.println("Please enter the passenger forename ");
String dForename = strKeyB.next();
System.out.println("Please enter the passenger surname ");
String dSurname = strKeyB.next();
System.out.println(pass1.passengerDelete(dForename, dSurname));
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
break;
}
在每个
案例的末尾使用break
这里的问题是您有两个案例1:
:
- 案例1:在
开关(选择)
- 案例1:在
开关(子选择)
你错过了两件事:
switch(choice)
中的break
语句,因此将执行案例2中的代码:
开关(子选择)
中的案例1:
的catch分支
看看这个简单的例子:
switch(choice) {
case 1:
// code1
break;
case 2:
// code2
break;
}
在这里,案例代码将单独执行
否则,在本规范中:
switch(choice) {
case 1:
// code1
case 2:
// code2
}
当不使用break
时,代码将继续执行,因此当choice==1
code1
和code2
时,将执行。但是如果choice==2
只执行code2
。当两个或多个选项共享某些代码时,这是非常有用的
注意:这也是有效的:
switch(choice) {
case 1:
case 2:
// code1
// code2
break;
}
在此语句中,case1
和case2
将执行相同的代码
解决方案:
了解这一点后,您的代码必须有两个修复:
将break
语句插入switch(choice)
中的case2:
将开关(子选择)
中案例1:
的break
语句移到末尾,就在案例2:
尝试使用中断标签中断外部开关语句。或者在内部开关语句之后放置break。更简单的是。
switch (choice) {
case 1: //finish add passenger
System.out.println(" 1 - Add passenger");
System.out.println(mySubMenu.displayMenu());
int subChoice = mySubMenu.getChoice();
switch (subChoice) {
case 1:
try {
System.out.println("Please enter the passengers forename");
String aforename = strKeyB.next();
System.out.println("Please enter the passengers surname");
String surname = strKeyB.next();
System.out.println("Please enter the passengers nationality");
String nationality = strKeyB.next();
System.out.println("Please enter the passenger age");
int age = intKeyB.nextInt();
System.out.println(pass1.pasengerAdd(aforename, surname, nationality, age));
} catch (Exception ex) {
System.out.println(ex.toString());
}
break; // here you miss case 1: in switch(subchoice) when exception
case 2:
try {
System.out.println("Please enter the passengers forename");
String onforename = strKeyB.next();
System.out.println("Please enter the passengers surname");
String onSurname = strKeyB.next();
pass1.pasengerAdd(onforename, onSurname);
} catch (Exception ex) {
System.out.println(ex.toString());
}
break;
//
// more code until...
//
break;
case 2: // here you miss case 1: in switch(choice)
try {
System.out.println(" 2 - Delete Passenger");