En Java, hay cuatro formas diferentes de leer la entrada del usuario en el entorno de la línea de comandos (consola).
1. Use la clase de lector almacenado en búfer
Este es el método de entrada clásico de Java, introducido en JDK1.0. Este método se usa al envolver System.in (flujo de entrada estándar) en InputStreamReader, e InputStreamReader se envuelve en BufferedReader, y podemos leer la entrada del usuario en la línea de comandos.
La entrada se almacena en búfer para una lectura eficiente.
Los códigos de envoltorio son difíciles de recordar.
implementar:
// 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);
}
}
ingresar:
尚学堂
producción:
Espacio auxiliar: O(1)
尚学堂
2. Usa la clase Escáner
Este es probablemente el método más preferido para aceptar entradas. El propósito principal de la clase Scanner es analizar cadenas 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étodo práctico para analizar primitivas (nextInt(), nextFloat(), ...) a partir de entradas tokenizadas.
Las expresiones regulares se pueden usar para encontrar tokens.
lectura fuera de sincronización
// 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);
}
}
ingresar:
hello
12
3.4
producción:
您输入了字符串 hello
您输入了整数 12
你输入了 float 3.4
3. Usa 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 cadena de formato (como System.out.printf() ).
ventaja:
- Leer la contraseña sin eco de los caracteres introducidos.
- El método de lectura es síncrono.
- Se puede utilizar la sintaxis de cadena de formato.
- No apto para uso en entornos no interactivos (como IDE).
// 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);
}
}
ingresar:
hello
producción:
您输入了字符串 hello
4. Uso de parámetros de línea de comandos
Se usa más comúnmente para la entrada del usuario para la codificación competitiva. Los argumentos de la línea de comandos se almacenan en formato de cadena. El método parseInt de la clase Integer convierte el argumento de cadena en un entero. Así mismo para carrozas y otros durante la ejecución. El uso de args[] aparece en este formulario de entrada. La transferencia de información ocurre durante la ejecución del programa. La línea de comando se asigna a args[]. Estos programas deben ejecutarse en cmd.
código:
// 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.");
}
}
Parámetros de línea de comando:
javac GFG1.java
java Main Hello World
producción:
命令行参数是:
你好
世界