Hay muchas situaciones en las que necesitamos tomar la entrada del usuario de acuerdo a sus requerimientos. En estos casos no podemos tomar las entradas en nuestro programa, sino que tenemos que tomar la entrada de la consola en la ejecución del programa. Java proporciona diferentes maneras de tomar la entrada y proporcionar la salida en la consola. En este artículo, vamos a aprender cómo tomar la entrada de la consola del usuario utilizando la consola de Java. Aprenderemos cada forma de utilizar una consola para la entrada y salida del usuario en Java con la ayuda de ejemplos.
Así que, vamos a empezar a explorar las diferentes formas de leer la entrada de la consola de Java.
Manteniéndote actualizado con las últimas tendencias tecnológicas, Únete a TechVidvan en Telegram
Consola de Java
Hay tres formas de tomar entradas de la consola en Java
- Usando la clase Java BufferedReader
- A través de la clase Java Scanner class
- Usando Java Console class
Usando BufferedReader class
Usando BufferedReader class es el método clásico de tomar entradas desde la consola. Java ha introducido esta técnica desde Java 1. La BufferedClass lee los datos línea por línea a través del método readLine(). Esta clase envuelve el System.in con un InputStreamReader.
Para utilizar estas clases, necesitamos usar el paquete java.io. Veamos un ejemplo para entender este método de lectura de entradas de la consola.
Código para leer la entrada usando la clase BufferedReader:
package com.techvidvan.consoleinput; //Java program to demonstrate BufferedReaderimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class BufferedReaderDemo{ public static void main(String args) throws IOException { InputStreamReader input = new InputStreamReader(System.in); //Taking the input data using the BufferedReader class BufferedReader reader = new BufferedReader(input); // Reading data using readLine System.out.println("Please enter the input:"); String name = reader.readLine(); // Printing the read line System.out.println("You entered: "); System.out.println(name); }}
Salida:
TechVidvan’s Java Tutorial
Has entrado:
TechVidvan’s Java Tutorial
Utilizando la clase BufferedReader hasta que el usuario escriba «over»
También podemos utilizar la clase BufferedReader para tomar la entrada del usuario hasta que éste escriba cualquier cadena que coincida con nuestra String de prueba. Pongamos un ejemplo para entender esto.
Código para entender este ejemplo:
package com.techvidvan.consoleinput;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class BufferedReaderDemo{ public static void main(String args) throws IOException { InputStreamReader input = new InputStreamReader(System.in); //Taking the input data using the BufferedReader class BufferedReader reader = new BufferedReader(input); String name = ""; System.out.println("Enter the names and when you want to stop entering the name, type Over"); while(!name.equals("Over")) { System.out.println("Enter the name: "); // Reading data using readLine() method name = reader.readLine(); // Printing the read line System.out.println("The entered name is: "+name); if(name.contentEquals("Over")) System.out.println("You entered Over!!"); } reader.close(); input.close(); } }
Salida:
Introduce el nombre:
Avina
El nombre introducido es: Avina
Introduce el nombre:
Neha
El nombre introducido es: Neha
Introduce el nombre:
Ravi
El nombre introducido es: Ravi
Introduce el nombre:
Over
El nombre introducido es:
¡Has introducido Over!!!
Nota: El método readLine() se utiliza para tomar la entrada String del usuario. Si queremos leer los otros tipos, podemos utilizar los métodos como
- Integer.parseInt(): para leer valores int
- Double.parseDouble(): para leer valores double
- Float.parseFloat(): para leer valores float
Para leer múltiples valores, utilizamos el método split().
Usando la clase Scanner
La segunda forma de tomar la entrada del usuario es utilizando la clase java.util.Scanner. Es probablemente la mejor opción para tomar la entrada de la consola del usuario. Esta clase lee la entrada del usuario en la consola o en la línea de comandos. El otro uso de la clase Scanner es analizar las cadenas y los tipos primitivos con la ayuda de las expresiones regulares de java.
La clase Scanner está presente en el paquete java.util. Esta clase obtiene la entrada de System.in (flujo de entrada estándar).
En segundo lugar, también utilizamos esta clase Console para leer la entrada de tipo contraseña sin mostrar los caracteres de la contraseña de entrada en la consola.
Sintaxis del uso de la clase Scanner:
Scanner scanner = new Scanner(System.in);
Ventajas
- La clase Scanner proporciona métodos útiles como nextInt(), nextDouble(), nextFloat(), etc, para analizar tipos de datos primitivos.
- La clase Scanner utiliza expresiones regulares y podemos usar estas expresiones regulares para encontrar tokens.
Desventajas
- Los métodos de la clase Scanner para leer valores no están sincronizados
Tipos de entrada de la clase Scanner
Para leer los valores de varios tipos de datos, la clase Scanner proporciona varios métodos. La siguiente tabla muestra estos métodos:
Método | Descripción |
siguienteBoolean() | Este método lee un valor booleano del usuario | siguienteByte() | Este método método lee un valor byte del usuario | siguienteDouble() | Este método lee un valor doble del usuario |
siguienteFloat() | Este método lee un valor float del usuario |
siguienteInt() | Este método lee un valor int del usuario |
siguienteLine() | Este método lee un valor String del usuario | siguienteLong() | Este método lee un valor long del usuario |
siguienteCorto() | Este método lee un valor corto del usuario |
Código para tomar la entrada del usuario usando la clase Scanner:
package com.techvidvan.consoleinput;import java.util.Scanner;public class ScannerClassDemo{ // Java program to understand the use of Scanner in Java public static void main(String args) { // Using Scanner for Getting Input from User Scanner sc = new Scanner(System.in); System.out.println("Enter a string"); String string = sc.nextLine(); System.out.println("You entered string: " +string); System.out.println("Enter a number"); int num = sc.nextInt(); System.out.println("You entered integer: " +num); System.out.println("Enter a float number"); float fnum = sc.nextFloat(); System.out.println("You entered float: " +fnum); }}
Salida:
TechVidvan
Ingresas la cadena: TechVidvan
Introduce un número
5
Has introducido un número entero: 5
Ingresa un número float
87,4
Ingresaste float: 87,4
Usando la clase Java Console
La clase Java Console es la tercera técnica para tomar entradas del usuario a través de la consola. La clase Console fue introducida desde Java 1.5. Esta clase está presente en el paquete java.io. Hay varios métodos en la clase Console que ayudan a leer los textos de entrada y las contraseñas desde la consola, sin mostrarlos en la pantalla. En segundo lugar, también utilizamos esta clase Console para leer la entrada de contraseñas sin mostrar los caracteres de la contraseña de entrada en la consola.
Ventajas
- Lectura de contraseña sin mostrar los caracteres de la contraseña en la consola.
- Los métodos de lectura de la clase consola están sincronizados.
- También podemos utilizar la sintaxis de cadena de formato con la clase Console
Desventajas
- No funciona en un entorno no interactivo (como en un IDE).
Métodos de la clase Java Console
La siguiente tabla muestra varios métodos de la clase Java Console:
Método | Descripción |
Lector() | Este método obtiene el objeto de la clase Reader relacionado con la consola. |
String readLine() | Este método lee una sola línea de texto de la consola. |
String readLine(String fmt, Object… args) | Este método proporciona un prompt formateado antes de leer el texto de entrada de la consola. |
char readPassword() | Se utiliza para leer una contraseña que es visible en la pantalla de la consola. |
Este método proporciona un prompt formateado antes de leer la contraseña que no es visible en la pantalla de la consola. | |
Console format(String fmt, Object… args) | Este método muestra una cadena formateada al flujo de salida de la consola. |
Console printf(String format, Object… args) | Este método imprime una cadena en el flujo de salida de la consola. |
PrintWriter writer() | Este método se utiliza para obtener el objeto de la clase PrintWriter. |
void flush() | Este método se utiliza para vaciar la consola. |
Código para tomar la entrada del usuario usando la clase Console:
package com.techvidvan.consoleinput;public class Sample { public static void main(String args) { // Using Console to input data from user System.out.println("Enter something"); String name = System.console().readLine(); System.out.println("You entered: " +name); }}
Salida:
Ejemplo de Console de Java para leer la contraseña
import java.io.Console; class Sample{ public static void main(String args) { Console c=System.console(); System.out.println("Enter password: "); char ch=c.readPassword(); String pass=String.valueOf(ch);//converting char array into string System.out.println("Password is: "+pass); } }
Salida:
Resumen
En este artículo de Java, vimos tres formas diferentes de obtener la entrada del usuario y luego procesarla y mostrar la salida deseada al usuario en la consola. Podemos utilizar cualquiera de las tres clases para obtener la entrada de la consola del usuario que son la clase BufferedReader, la clase Scanner, y la clase Java Console. Hay varios métodos para leer la entrada del usuario. Discutimos estas tres formas con el ejemplo.
Gracias por leer nuestro artículo. Espero que lo hayas disfrutado. Compártelo en las redes sociales.
Sigue aprendiendo 🙂
0 comentarios