Java 开关盒
Java Switch case
当我进入子菜单并完成例如case 1,case完成后,自动跳转到主菜单的case 2,谁能告诉我如何停止这个,因为我想要它只是再次显示主菜单
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;
}
在每个 case
块的末尾使用 break
。
这里的问题是你有两个 case 1:
:
- 案例 1:在
switch(choice)
- 案例 1:在
switch(subchoice)
您错过了两件事:
switch(choice)
中的break
语句,所以会执行case 2:
的代码。
case 1:
在 switch(subchoice)
的 catch 分支。
看看这个简单的案例:
switch(choice) {
case 1:
// code1
break;
case 2:
// code2
break;
}
这里case代码会单独执行,
否则在此代码中:
switch(choice) {
case 1:
// code1
case 2:
// code2
}
不使用break
时,代码会一直执行,所以当choice==1
code1
AND code2
执行。但是如果 choice==2
只会执行 code2
。 当 2 个或更多选项共享一些代码时,确实有用。
注意:这也是有效的:
switch(choice) {
case 1:
case 2:
// code1
// code2
break;
}
在此语句中,Case 1
和 Case 2
将执行相同的代码。
解决方案:
知道这一点,您的代码必须有 2 个修复:
- 在
switch(choice)
中的 case 2:
代码之前插入 break
语句
- 将
case 1:
中case 1:
的break
语句移到最后,就在case 2:
的代码之前
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");
当我进入子菜单并完成例如case 1,case完成后,自动跳转到主菜单的case 2,谁能告诉我如何停止这个,因为我想要它只是再次显示主菜单
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;
}
在每个 case
块的末尾使用 break
。
这里的问题是你有两个 case 1:
:
- 案例 1:在
switch(choice)
- 案例 1:在
switch(subchoice)
您错过了两件事:
switch(choice)
中的break
语句,所以会执行case 2:
的代码。case 1:
在switch(subchoice)
的 catch 分支。
看看这个简单的案例:
switch(choice) {
case 1:
// code1
break;
case 2:
// code2
break;
}
这里case代码会单独执行,
否则在此代码中:
switch(choice) {
case 1:
// code1
case 2:
// code2
}
不使用break
时,代码会一直执行,所以当choice==1
code1
AND code2
执行。但是如果 choice==2
只会执行 code2
。 当 2 个或更多选项共享一些代码时,确实有用。
注意:这也是有效的:
switch(choice) {
case 1:
case 2:
// code1
// code2
break;
}
在此语句中,Case 1
和 Case 2
将执行相同的代码。
解决方案:
知道这一点,您的代码必须有 2 个修复:
- 在
switch(choice)
中的case 2:
代码之前插入 - 将
case 1:
中case 1:
的break
语句移到最后,就在case 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");