Probar entradas negativas y no enteras
En este paso, probaremos nuestro programa SquareRootChecker.java
con números negativos y consideraremos qué sucede si el usuario ingresa algo que no es un entero.
En el código que escribimos, incluimos una comprobación para números negativos:
if (number < 0) {
System.out.println("Cannot calculate the square root of a negative number.");
}
Esta instrucción if
maneja el caso en el que el usuario ingresa un entero negativo. Vamos a probar esta parte del código.
-
Asegúrate de estar en el directorio ~/project
en la Terminal.
-
Ejecuta el programa compilado:
java SquareRootChecker
-
Cuando se te solicite, ingresa un número negativo, por ejemplo, -4
, y presiona Enter.
Enter an integer: -4
Cannot calculate the square root of a negative number.
Como se esperaba, el programa identifica correctamente que no puede calcular la raíz cuadrada de un número negativo e imprime el mensaje adecuado.
Ahora, consideremos qué sucede si el usuario ingresa una entrada que no es un entero, como texto o un número decimal. Nuestro programa utiliza scanner.nextInt()
para leer la entrada. Este método está diseñado para leer solo valores enteros. Si el usuario ingresa algo que no se puede analizar como un entero, se producirá una InputMismatchException
y el programa se detendrá.
Manejar estos errores de manera adecuada es una parte importante de escribir programas robustos. Para este laboratorio introductorio, no implementaremos un manejo completo de errores para entradas no enteras, pero es importante ser consciente de que esto puede suceder. En futuros laboratorios, aprenderás técnicas como los bloques try-catch
para manejar excepciones y hacer que tus programas sean más resistentes a entradas inesperadas del usuario.
Por ahora, simplemente observemos qué sucede cuando se ingresa una entrada no entera.
-
Vuelve a ejecutar el programa compilado:
java SquareRootChecker
-
Cuando se te solicite, ingresa algún texto, por ejemplo, hello
, y presiona Enter.
Enter an integer: hello
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at SquareRootChecker.main(SquareRootChecker.java:9)
Verás un mensaje de error que indica una InputMismatchException
. Esto se debe a que scanner.nextInt()
esperaba un entero pero recibió "hello".
Este paso destaca la importancia de considerar diferentes tipos de entrada del usuario y cómo tu programa las manejará. Si bien nuestro programa actual es sencillo, comprender estos posibles problemas es crucial para desarrollar aplicaciones más complejas.