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.

Capturando excepciones en múltiples entradas del usuario sin volver a la primera entrada.

Aquí hay un pequeño programa que tiene múltiples entradas del usuario para obtener el número más pequeño ingresado. Estoy tratando de capturar la excepción InputMismatchException en el mismo bloque try / catch, pero si el usuario ingresa cualquier cosa menos un int en la segunda o tercera int que se va a ingresar, entonces salta de vuelta a la primera entrada que el usuario ya ingresó correctamente. ¿Hay una forma más simple de solucionar esto o necesito crear bloques try / catch separados para cada entrada?

public class ObteniendoElValorMasPequenoIngresado {

    public static void main(String[] args) {

        //Scanner input = new Scanner(System.in);
        boolean entradaCorrecta = true;
        double a = 0;
        double b = 0;
        double c = 0;

        Scanner input = new Scanner(System.in);

            do {

                try {

                System.out.println("Ingrese el primer número: ");
                    a = input.nextDouble();

                System.out.println("Ingrese el segundo número: ");
                    b = input.nextDouble();

                System.out.println("Ingrese el tercer número: ");
                    c = input.nextDouble();
                    entradaCorrecta = false;

            }catch (InputMismatchException ie) {
                System.out.println("¡Sólo se permiten números! ¡No letras o palabras!");
                input.nextLine();
            }


        } while (entradaCorrecta);

            System.out.println("El valor más pequeño es " + smallest(a, b, c) + "\n");

}

public static double smallest(double a, double b, double c)
{

return Math.min(Math.min(a, b), c);
}

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma más sencilla de solucionar esto. Puede utilizar un bucle while para seguir solicitando al usuario una entrada hasta que ingresen un número válido. De esta manera, no necesita crear bloques try/catch separados para cada entrada. Aquí hay un ejemplo de cómo podría hacerlo:

    public class TomandoValorMinimoIngresado {
    
    public static void main(String[] args) {
    
        double a = 0;
        double b = 0;
        double c = 0;
    
        Scanner input = new Scanner(System.in);
    
        while (true) {
            try {
                System.out.println("Ingrese el primer número: ");
                a = input.nextDouble();
    
                System.out.println("Ingrese el segundo número: ");
                b = input.nextDouble();
    
                System.out.println("Ingrese el tercer número: ");
                c = input.nextDouble();
    
                break;
            } catch (InputMismatchException ie) {
                System.out.println("¡Solo se permiten números para ser ingresados. No letras o palabras!");
                input.nextLine();
            }
        }
    
        System.out.println("El valor más pequeño es " + smallest(a, b, c) + "\n");
    
    }
    
    public static double smallest(double a, double b, double c)
    { 
    
      return Math.min(Math.min(a, b), c);
    }
    
    
    }
    

Comments are closed.