Formas de leer la entrada desde la consola en Java

En Java, hay cuatro formas diferentes de leer la entrada del usuario en el entorno de la línea de comandos (consola). 

1. Uso de la clase de lector almacenado en búfer

Este es el método clásico de Java para recibir entradas, introducido en JDK1.0. Este método se usa al envolver 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. 

  • La entrada se almacena en búfer para una lectura eficiente.
  • El código de envoltura es difícil de recordar.

Implementación:

Java

// Java program to demonstrate BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
    public static void main(String[] args)
        throws IOException
    {
        // Enter data using BufferReader
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(System.in));
 
        // Reading data using readLine
        String name = reader.readLine();
 
        // Printing the read line
        System.out.println(name);
    }
}

Aporte: 

Geek

Producción: 

Espacio Auxiliar : O(1)
 

Geek

Nota: 

Para leer otros tipos, usamos funciones como Integer.parseInt(), Double.parseDouble(). Para leer múltiples valores, usamos split().

2. Uso de la clase de escáner

Este es probablemente el método más preferido para recibir información. El propósito principal de la clase Scanner es analizar strings y tipos primitivos usando expresiones regulares, sin embargo, también se puede usar para leer la entrada del usuario en la línea de comando. 

  • Métodos convenientes para analizar primitivas (nextInt(), nextFloat(), …) de la entrada tokenizada.
  • Las expresiones regulares se pueden usar para encontrar tokens.
  • Los métodos de lectura no están sincronizados.

Para ver más diferencias, consulte este artículo.

Java

// Java program to demonstrate working of Scanner in Java
import java.util.Scanner;
 
class GetInputFromUser {
    public static void main(String args[])
    {
        // Using Scanner for Getting Input from User
        Scanner in = new Scanner(System.in);
 
        String s = in.nextLine();
        System.out.println("You entered string " + s);
 
        int a = in.nextInt();
        System.out.println("You entered integer " + a);
 
        float b = in.nextFloat();
        System.out.println("You entered float " + b);
    }
}

Aporte: 

GeeksforGeeks
12
3.4

Producción:

You entered string GeeksforGeeks
You entered integer 12
You entered float 3.4

3. Uso de la clase de consola

Se ha convertido en la forma preferida de leer la entrada del usuario desde la línea de comandos. Además, se puede usar para leer entradas similares a contraseñas sin hacer eco de los caracteres ingresados ​​por el usuario; también se puede usar la sintaxis de string de formato (como System.out.printf()). 

ventajas:

  • Lectura de contraseña sin repetir los caracteres ingresados.
  • Los métodos de lectura están sincronizados.
  • Se puede utilizar la sintaxis de string de formato.
  • No funciona en un entorno no interactivo (como en un IDE).

Java

// Java program to demonstrate working of System.console()
// Note that this program does not work on IDEs as
// System.console() may require console
public class Sample {
    public static void main(String[] args)
    {
        // Using Console to input data from user
        String name = System.console().readLine();
 
        System.out.println("You entered string " + name);
    }
}

Aporte: 

GeeksforGeeks

Producción:

You entered string GeeksforGeeks

4. Usando el argumento de la línea de comando

Entrada de usuario más utilizada para la codificación competitiva. Los argumentos de la línea de comandos se almacenan en formato de string. El método parseInt de la clase Integer convierte el argumento de string en Integer. Del mismo modo, para float y otros durante la ejecución. El uso de args[] surge en este formulario de entrada. El paso de información tiene lugar durante la ejecución del programa. La línea de comando se asigna a args[]. Estos programas deben ejecutarse en cmd.

Código: 
 

Java

// Program to check for command line arguments
class Hello {
    public static void main(String[] args)
    {
        // check if length of args array is
        // greater than 0
        if (args.length > 0) {
            System.out.println(
                "The command line arguments are:");
 
            // iterating the args array and printing
            // the command line arguments
            for (String val : args)
                System.out.println(val);
        }
        else
            System.out.println("No command line "
                               + "arguments found.");
    }
}

Argumentos de la línea de comandos: 

javac GFG1.java
java Main Hello World

Producción:

The command line arguments are:
Hello
World

Consulte esto para obtener formas más rápidas de leer la entrada.

Este artículo es una contribución de D Raj Ranu . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *