Entonces, hice una clase de hamburguesas con un método para cosas adicionales, mi pregunta es ¿cómo puedo usar el caso 0,1,2 solo 1 vez, como si uso el caso 0, ya no puedo usarlo, solo puedo usar 1 y 2, si uso el caso 1 después de 0, entonces puedo usar solo el caso 2 ya que usé el caso 0 y 1 antes, ¿es posible hacer algo así? Si es así, ¿cómo? El código:
boolean flag=true; while(flag){ System.out.println("Enter your choice for extra toppings "); int choice=scanner.nextInt(); scanner.nextLine(); switch(choice) { case 0: double salad = 0.35; setAdditional(getAdditional() + salad); System.out.println("salad added\n"); break; case 1: double bacon=1.05; setAdditional(getAdditional()+bacon); System.out.println("Bacon added \n"); break; case 2: double fries=0.79; setAdditional(getAdditional()+fries); System.out.println("fries added \n"); break; case 3: System.out.println("Done"); flag=false; } } } ``` boolean flag = true; Set<Integer> set = new HashSet<>(); while (flag) { System.out.println("Enter your choice for extra toppings "); int choice = scanner.nextInt(); scanner.nextLine(); switch (choice) { case 0: if (!set.contains(choice)) { double salad = 0.35; setAdditional(getAdditional() + salad); System.out.println("salad added\n"); break; } else { System.out.println("Added already"); } continue; case 1: double bacon = 1.05; setAdditional(getAdditional() + bacon); System.out.println("Bacon added \n"); break; case 2: double fries = 0.79; setAdditional(getAdditional() + fries); System.out.println("fries added \n"); break; case 3: System.out.println("Done"); flag = false; } set.add(choice); } }así que al final lo hice con Set, solo para ensalada, pero es lo mismo para el resto, si alguien más lo necesita.
sus casos van por números enteros, por lo que una matriz de valores booleanos con 1 elemento para cada opción.
boolean[] allowed = new boolean[options]; (más rápido que hasMap de cadena a booleano).
agregue una marca justo antes de la instrucción "cambiar":
if(allowed[choice] && choice != 3) {...}también debe crear una constante de entero STOP_OPTION o algo así y usarla en la declaración if anterior y en el "caso" final de su declaración de cambio. en su ejemplo, configúrelo en 3. Luego, luego puede cambiarlo sin reemplazar todas las instancias de "3" en su código. pero eso es más una sugerencia de estilo.
el booleano "bandera" también es redundante, el ciclo while puede verificar si la opción! = 3. ¡Tenga cuidado con NumberFormatExceptions!
¡buena suerte!