while switch ejercicios ejemplos ciclos ciclo java while-loop break

ejercicios - Java ¿Cómo puedo romper un bucle while bajo una instrucción switch?



if java (4)

¿Cómo terminar el menú interno?

Código de ejemplo:

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

Tengo una tarea para implementar una aplicación de prueba simple, a continuación está mi código actual:

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

Lo que quiero hacer ahora es que cuando se presiona 0 , significa que el usuario quiere salir de la prueba, luego rompo el while loop e imprimo. La Test is done , pero no funciona así, sé que la razón podría Ya sea que el "break" rompe el switch , ¿cómo puedo dejar que rompa el while loop ?


Necesitas una variable booleana por ejemplo 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;


Ponga el tiempo dentro de una función y cuando presione 0 en lugar de romper, simplemente return . Por ejemplo :

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


Puedes label tu bucle while, y break el labeled loop , que debería ser así:

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

Y la label puede ser cualquier palabra que desee, por ejemplo, "loop1" .