Conozca las diferentes maneras de leer la entrada (datos por el teclado) desde la consola en Java. En Java, hay tres formas diferentes de leer la entrada del usuario en el entorno de línea de comandos (consola).
Table de Contenido
0. Lectura de datos desde teclado
Para recoger datos por teclado usamos System.console().readLine() (ver sección 3 de este artículo | NO TRABAJA EN UN IDE). Al llegar a esta sentencia, el programa se detiene y espera que el usuario introduzca información mediante el teclado. La introducción de datos termina con la pulsación de la tecla INTRO. Una vez que el usuario presiona INTRO, todo lo que se ha tecleado se almacena en una variable.
Ejemplo:
class EntradaTexto { public static void main(String[] args) { String nombre; System.out.print("Por favor, dime tu nombre: "); nombre = System.console().readLine(); System.out.println("Hola " + nombre + ", ¡bienvenido a Java desde Cero!"); } }
Si en lugar de texto necesitamos datos numéricos, deberemos convertir la cadena introducida en un número con el método adecuado. Integer.parseInt() convierte el texto introducido por teclado en un dato numérico, concretamente en un número entero.
- Lo veremos más adelante, pero puede revisar: Conversión de tipos de datos en Java
Pero como decía no es recomendado si está utilizando un IDE. Sin embargo, es bueno conocerlo. ¡Ahora vamos a la acción! Pasemos a ver las diferentes maneras de leer datos en Java.
1.Utilizando la Clase Buffered Reader
Este es el método clásico de Java para leer datos de entrada, introducido en JDK 1.0. Este método se usa envolviendo System.in (flujo de entrada estándar) en un InputStreamReader que está envuelto en un BufferedReader, podemos leer la entrada del usuario en la línea de comando.
Ejemplo:
// Programa Java para demostrar BufferedReader import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class LecturaDatos { public static void main(String[] args) throws IOException { //Ingrese datos usando BufferReader BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); // Leyendo datos usando readLine String name = reader.readLine(); // Imprimir la línea de lectura System.out.println(name); } }
Entrada:
Javeros
Salida:
Javeros
2.Utilizando la Clase Scanner
Este es probablemente el método más preferido para tomar datos de entrada. El objetivo principal de la clase Scanner es analizar los tipos primitivos y las cadenas con expresiones regulares, sin embargo, también se puede usar para leer las entradas del usuario en la línea de comandos.
Ejemplo:
// Programa Java para demostrar el funcionamiento de la clase Scanner en Java import java.util.Scanner; class ObtenerEntradaUsuario { public static void main(String args[]) { // Usando Scanner para obtener información del usuario Scanner in = new Scanner(System.in); String s = in.nextLine(); System.out.println("Usted ingresó la cadena: "+s); int a = in.nextInt(); System.out.println("Usted ingresó un entero: "+a); float b = in.nextFloat(); System.out.println("Usted ingresó un float: "+b); } }
Entrada y Salida:
java Usted ingresó la cadena: java 2 Usted ingresó un entero: 2 2,0 Usted ingresó un float: 2.0
- Puede leer un poco más acerca de clase Scanner en este enlace.
3.Utilizando la Clase Console
Se ha convertido en una forma preferida para leer la entrada del usuario desde la línea de comandos. Además, se puede usar para leer una entrada similar a la contraseña sin hacer eco de los caracteres ingresados por el usuario (sin mostrarlos); la sintaxis de cadena de formato también se puede usar (como System.out.printf ()).
Ejemplo:
// Programa Java para demostrar el funcionamiento de System.console() // Tenga en cuenta que este programa no funciona en IDEs public class Sample { public static void main(String[] args) { // Usar la consola para ingresar datos del usuario String name = System.console().readLine(); System.out.println(name); } }
Cuéntanos cuál es tu forma o manera preferida de entrada y lectura de datos en Java 🙂
8 comentarios
Mi forma favorita de leer los datos en Java es utilizando la clase Scanner 🙂
Interesante, gracias por comentar 🙂
otra forma (no por consola)
JOptionPane.showMessageDialog(null,”CUAL ES TU NOMBRE?”);
podemos hacer cosas como
String a=String.valueoff(JOptionPane.showMessageDialog(null,”CUAL ES TU NOMBRE?”));
etc meter en integer y asi, lo meti en valueof por si se llama 777 jaja
Hola Alex aun no entiendo bien en que tipo de ocasiones usar una u otra, tengo entendido que BufferdReader es mas compleja para algunas ocasines, podrías explicar eso de la sincronizacion y cuando conviene usar una u otra?
muchas gracias .
se pueden leer varias variables en una misma linea como lo hace Scanner pero con BufferedReader?
StdIn.readInt();
Al realizar el ejemplo :
class EntradaTexto {
public static void main(String[] args) {
String nombre;
System.out.print(“Por favor, dime tu nombre: “);
nombre = System.console().readLine();
System.out.println(“Hola ” + nombre + “, ¡bienvenido a Java desde Cero!”);
}
}
me aparece el error : “Exception in thread “main” java.lang.NullPointerException” lo transcribi tal cual en la imagen…porque me da error?
Hola, creo que hay otras como joption panel y talvez haya mas java es un universo…