Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

necesito enviar 2 veces para que entre al menu!!

buenas tardes estoy teniendo un problema con mi código funciona todo el problema es que necesito elegir 2 veces una opcion para que arranque a funcionar por ejemplo, me muestra el menú presiono "1", me vuelve a aparecer el menú pero sin en saldo en pantalle, tengo que volver a presionar el 1 para que me lo muestre, y si borro el print antes del while no me muestra el menu, este es mi codigo:

package desafios; import java.util.Scanner; public class javadesafio { public static void main(String[] args) { String nombre = "tony"; String tipodecuenta = "corriente"; double saldo = 1500; int opc = 0; Scanner teclado = new Scanner(System.in);

    System.out.println("______________________");
    System.out.println("\nnombre del cliente: " + nombre);
    System.out.println("tipo de cuenta: " + tipodecuenta);
    System.out.println("saldo de: " + saldo + "$");
    System.out.println("\n______________________");

    String Menu = """
            *** seleccione la opcion que desea***
            1 - consultar saldo
            2 - retirar
            3 - depositar
            0 - salir
            """;
    
    System.out.println(Menu); (si lo borro no muestra el menu)
    opc = teclado.nextInt(); (si lo borro no entra al while)

    while (opc != 0){
        System.out.println(Menu);
        opc = teclado.nextInt();

        double valoraretirar = 0;
        double depositar = 0;

        switch (opc){
            case 1:
                System.out.println("saldo actualizado es: " + saldo + "$");
                break;
            case 2:
                System.out.println("cuanto saldo desea retirar?");
                valoraretirar = teclado.nextDouble();

                if(saldo < valoraretirar){
                    System.out.println("saldo insuficiente");
                }else{
                    saldo = saldo - valoraretirar;
                    System.out.println("el saldo actualizado seria de: " + saldo + "$");
                }
                break;
            case 3:
                System.out.println("cuanto quiere depositar?");
                depositar = teclado.nextDouble();
                saldo += depositar;
                System.out.println("el saldo actualizado seria de: " + saldo + "$");
                break;
            case 0:
                System.out.println("gracias por utilizar nuestros servicios");
                break;
            default:
                System.out.println("opcion incorrecta ingrese otra opcion");


        }
    }
}

}

1 respuesta

¡Hola Yago, espero que estés bien!

Entiendo tu problema. Parece que el bucle while se está ejecutando dos veces antes de mostrar el menú. Esto puede estar sucediendo porque el valor de "opc" se está leyendo antes del bucle while, y luego se vuelve a leer dentro del bucle while.

Una forma de solucionar esto es mover la lectura de "opc" dentro del bucle while, de modo que no se lea dos veces antes de mostrar el menú. Aquí tienes una posible modificación en tu código:

opc = -1; // Inicializamos opc con un valor distinto de cero para que entre al bucle while

while (opc != 0){
    System.out.println(Menu);
    opc = teclado.nextInt();
    // Resto del código...
}

Al inicializar "opc" con un valor distinto de cero antes de entrar al bucle while, evitamos que se lea dos veces antes de mostrar el menú.

Espero que esta solución te ayude a resolver tu problema. ¡Buena suerte con tu aplicación en Java!

Espero haber ayudado y buenos estudios!