Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

154
Vistas
¿Cómo no voy a repetir el mismo caso después de usarlo?

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; } } } ```
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

 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.

over 4 years ago · Santiago Trujillo Denunciar

0

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!

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda