如何在 switch 语句下中断 while 循环?

我有一个实现简单测试应用程序的作业,下面是我当前的代码:

import java.util.*;


public class Test{


private static int typing;


public static void main(String argv[]){
Scanner sc = new Scanner(System.in);
System.out.println("Testing starts");
while(sc.hasNextInt()){
typing = sc.nextInt();
switch(typing){
case 0:
break; //Here I want to break the while loop
case 1:
System.out.println("You choosed 1");
break;
case 2:
System.out.println("You choosed 2");
break;
default:
System.out.println("No such choice");
}
}
System.out.println("Test is done");
}
}

我现在想做的是,当按下 0,这意味着用户想退出测试,然后我打破 while loop和打印 Test is done,但它不是这样工作的,我知道原因可能是 "break"打破 switch,我怎么能让它打破 while loop而不是?

62978 次浏览

你需要一个布尔变量,例如 shouldBreak

    boolean shouldBreak = false;
switch(typing){
case 0:
shouldBreak = true;
break; //Here I want to break the while loop
case 1:
System.out.println("You choosed 1");
break;
case 2:
System.out.println("You choosed 2");
break;
default:
System.out.println("No such choice");
}
if (shouldBreak) break;

你可以 label你的 while 循环,和 breaklabeled loop,它应该像这样:

loop: while(sc.hasNextInt()){
typing = sc.nextInt();
switch(typing){
case 0:
break loop;
case 1:
System.out.println("You choosed 1");
break;
case 2:
System.out.println("You choosed 2");
break;
default:
System.out.println("No such choice");
}
}

label可以是你想要的任何单词,例如 "loop1"

把 while 放在一个函数中,当你按0而不是中断时,只按 return。例如:

    import java.util.*;


public class Test{


private static int typing;


public static void main(String argv[]){
Scanner sc = new Scanner(System.in);
func(sc);
System.out.println("Test is done");
}
}


public static void func(Scanner sc) {




System.out.println("Testing starts");
while(sc.hasNextInt()){
typing = sc.nextInt();
switch(typing){
case 0:
return; //Here I want to break the while loop
case 1:
System.out.println("You choosed 1");
break;
case 2:
System.out.println("You choosed 2");
break;
default:
System.out.println("No such choice");
}
}
}


}

如何终止内部菜单?

示例代码:

import java.util.Scanner;


public class Example {


public static void main(String[] args) {
Scanner input = new Scanner(System.in); //used to get input
int option1, option2 = 0;
boolean loop_terminate = true; //flag used to terminate inner while loop


//Main Menu
while (true) {
//Main Menu options
System.out.println("1.Option 1");
System.out.println("2.Option 2");
System.out.println("3.Option 3");
System.out.println("4.Option 4");
System.out.println("5.Exit main menu");


System.out.print("Please enter your choice : ");
option1 = input.nextInt();


switch (option1) {


case 1:
//do something here
break;
case 2:
//do something here
break;
case 3:


while (loop_terminate) {
//Inner menu options
System.out.println("1.Inner Menu option 1");
System.out.println("2.Inner Menu option 2");
System.out.println("3.Inner Menu option 3");
System.out.println("4.Return to Main Menu");


System.out.print("Please enter your choice : ");
option2 = input.nextInt();
switch (option2) {


case 1:
break;
case 2:
break;
case 3:
break;
case 4:
loop_terminate = false; //this will terminate inner menu
break;
default:
System.out.println("Invalid option");
break;
}
}
break; //never forget to add this break statement
case 4:
break;
case 5:
return; //terminate outer menu


default:
System.out.println("Invalid option");
}
}


}
}