Java Come posso interrompere un ciclo while sotto un’istruzione switch?

Ho un compito per implementare una semplice applicazione di test, di seguito è il mio codice corrente:

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"); } } 

Quello che voglio fare ora è che quando viene premuto 0 , significa che l’utente vuole uscire dal test, quindi interrompo il while loop e il Test is done stampa Test is done , ma non funziona così, so che il motivo potrebbe che la "break" interrompa l’ switch , come posso lasciarlo interrompere il while loop ?

Puoi label tuo ciclo while e break il labeled loop , che dovrebbe essere come questo:

 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"); } } 

E l’ label può essere qualsiasi parola tu voglia, per esempio "loop1" .

Hai bisogno di una variabile booleana, ad esempio 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; 

Metti il ​​tempo dentro una funzione e quando premi 0 invece di break, basta return . Per esempio :

  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"); } } } } 

Come terminare il menu interno?

Codice di esempio:

 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"); } } } }