es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo evitar repetir el mismo caso después de haberlo utilizado?

Entonces, hice una clase “burger” con un método para agregar cosas extra. Mi pregunta es ¿cómo puedo usar los casos 0, 1 y 2 solamente una vez? Por ejemplo, si uso el caso 0, ya no lo puedo usar más, solo puedo usar los casos 1 y 2. Si uso el caso 1 después del 0, entonces solo puedo usar el caso 2, ya que usé los casos 0 y 1 antes. ¿Es posible hacer algo así? Si es así, ¿cómo?

El código:

public void additions(){
    boolean flag=true;
    while(flag){
        System.out.println("Ingresa tu elección para ingredientes extra: ");
        int choice=scanner.nextInt();
        scanner.nextLine();
        switch(choice) {
            case 0:
                double salad = 0.35;
                setAdditional(getAdditional() + salad);
                System.out.println("Se agregó ensalada\n");
                break;
            case 1:
                double bacon=1.05;
                setAdditional(getAdditional()+bacon);
                System.out.println("Se agregó tocino\n");
                break;
            case 2:
                double fries=0.79;
                setAdditional(getAdditional()+fries);
                System.out.println("Se agregaron papas fritas\n");
                break;
            case 3:
                System.out.println("Finalizado");
                flag=false;
                break;
        }
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible solución para lograr el comportamiento deseado es utilizar banderas booleanas para cada caso, indicando si ya ha sido utilizado o no. Aquí tienes un ejemplo de modificación del código:

    public void additions() {
        boolean flag = true;
        boolean used0 = false;
        boolean used1 = false;
        boolean used2 = false;
        while (flag) {
            System.out.println("Ingrese su elección de ingredientes adicionales: ");
            int choice = scanner.nextInt();
            scanner.nextLine();
            switch (choice) {
                case 0:
                    if (!used0) {
                        double salad = 0.35;
                        setAdditional(getAdditional() + salad);
                        System.out.println("ensalada agregada\n");
                        used0 = true;
                    } else {
                        System.out.println("Opción ya utilizada, elija otra.");
                    }
                    break;
                case 1:
                    if (!used1) {
                        double bacon = 1.05;
                        setAdditional(getAdditional() + bacon);
                        System.out.println("Tocino agregado\n");
                        used1 = true;
                    } else {
                        System.out.println("Opción ya utilizada, elija otra.");
                    }
                    break;
                case 2:
                    if (!used2) {
                        double fries = 0.79;
                        setAdditional(getAdditional() + fries);
                        System.out.println("Papas fritas agregadas\n");
                        used2 = true;
                    } else {
                        System.out.println("Opción ya utilizada, elija otra.");
                    }
                    break;
                case 3:
                    System.out.println("Listo");
                    flag = false;
                    break;
                default:
                    System.out.println("Elección inválida, intente nuevamente.");
            }
        }
    }
    

    En esta versión modificada, cada caso tiene su propia bandera booleana (por ejemplo, used0 para el caso 0), inicializada como false. Cuando se utiliza un caso, la bandera respectiva se establece en true, evitando que se utilice nuevamente. Si el usuario intenta usar un caso que ya ha sido utilizado, se muestra un mensaje y el bucle continúa.

    Ten en cuenta que esta implementación asume que solo se está preparando una hamburguesa a la vez. Si se pueden preparar múltiples hamburguesas a la vez y el comportamiento de las opciones de casos debe ser independiente para cada hamburguesa, sería necesaria una aproximación diferente.

Comments are closed.