Manejar la Conversión de Entrada de Tipo String
En aplicaciones del mundo real, a menudo es necesario obtener entrada del usuario, y esta entrada se lee típicamente como un String
. Para realizar comprobaciones numéricas, como determinar si la entrada representa un entero, primero debes convertir el String
a un tipo numérico, como double
.
En este paso, modificaremos nuestro programa para tomar la entrada del usuario como un String
, convertirla a un double
y luego usar Math.floor()
para comprobar si la entrada original representaba un entero.
Abre el archivo IntegerCheck.java
en el editor del WebIDE.
Reemplaza el código existente con el siguiente:
import java.util.Scanner; // Import the Scanner class
public class IntegerCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Create a Scanner object
System.out.print("Enter a number: "); // Prompt the user for input
String input = scanner.nextLine(); // Read user input as a String
try {
// Convert the String input to a double
double number = Double.parseDouble(input);
// Check if the number is an integer using Math.floor()
if (number == Math.floor(number)) {
System.out.println("The input '" + input + "' represents an integer.");
} else {
System.out.println("The input '" + input + "' does not represent an integer.");
}
} catch (NumberFormatException e) {
// Handle cases where the input is not a valid number
System.out.println("Invalid input: '" + input + "' is not a valid number.");
} finally {
scanner.close(); // Close the scanner
}
}
}
Veamos las nuevas partes del código:
import java.util.Scanner;
: Esta línea importa la clase Scanner
, que se utiliza para leer entrada desde la consola.
Scanner scanner = new Scanner(System.in);
: Esto crea un objeto Scanner
que lee entrada desde el flujo de entrada estándar (System.in
), que normalmente es el teclado.
System.out.print("Enter a number: ");
: Esta línea solicita al usuario que ingrese un número.
String input = scanner.nextLine();
: Esto lee toda la línea de entrada ingresada por el usuario como un String
y la almacena en la variable input
.
try { ... } catch (NumberFormatException e) { ... }
: Este es un bloque try-catch
. Se utiliza para manejar posibles errores. En este caso, estamos intentando convertir la entrada String
a un double
. Si la entrada no es un número válido (por ejemplo, "hello"), se producirá una NumberFormatException
, y se ejecutará el código dentro del bloque catch
.
double number = Double.parseDouble(input);
: Esta es la parte crucial de la conversión. Double.parseDouble()
es un método estático de la clase Double
que intenta convertir un String
en un valor double
.
finally { scanner.close(); }
: El bloque finally
asegura que se llame al método scanner.close()
, liberando los recursos del sistema utilizados por el Scanner
, independientemente de si se produjo una excepción o no.
Guarda el archivo IntegerCheck.java
.
Ahora, compila y ejecuta el programa desde la Terminal en el directorio ~/project
:
javac IntegerCheck.java
java IntegerCheck
El programa ahora esperará a que ingreses una entrada.
Intenta ingresar un entero, como 42
, y presiona Enter. La salida debería ser:
Enter a number: 42
The input '42' represents an integer.
Ejecuta el programa de nuevo e ingresa un número no entero, como 3.14
, y presiona Enter. La salida debería ser:
Enter a number: 3.14
The input '3.14' does not represent an integer.
Ejecuta el programa una vez más e ingresa algo que no sea un número, como test
, y presiona Enter. La salida debería ser:
Enter a number: test
Invalid input: 'test' is not a valid number.
Esto demuestra cómo manejar la entrada del usuario como un String
, convertirla a un tipo numérico y luego aplicar nuestra comprobación Math.floor()
mientras también se manejan posibles errores de entrada no válida.