¿Cómo puedo leer la entrada de la consola usando la clase de escáner en Java?

¿Cómo podría leer la entrada desde la consola usando la clase de Scanner ? Algo como esto:

 System.out.println("Enter your username: "); Scanner = input(); // Or something like this, I don't know the code 

Básicamente, todo lo que quiero es que el escáner lea una entrada para el nombre de usuario y asigne la entrada a una variable String .

Un simple ejemplo para ilustrar cómo funciona java.util.Scanner sería leer un solo entero de System.in . Es realmente bastante simple.

 Scanner sc = new Scanner(System.in); int i = sc.nextInt(); 

Para recuperar un nombre de usuario, probablemente usaría sc.nextLine() .

 System.out.println("Enter your username: "); Scanner scanner = new Scanner(System.in); String username = scanner.nextLine(); System.out.println("Your username is " + username); 

También puede usar next(String pattern) si desea más control sobre la entrada, o simplemente validar la variable de username .

Encontrará más información sobre su implementación en la documentación de API para java.util.Scanner

 Scanner scan = new Scanner(System.in); String myLine = scan.nextLine(); 

Lectura de datos desde la consola

  • BufferedReader está sincronizado, por lo que las operaciones de lectura en un BufferedReader se pueden realizar de forma segura desde varios subprocesos. Se puede especificar el tamaño del búfer o se puede usar el tamaño predeterminado ( 8192 ). El valor predeterminado es lo suficientemente grande para la mayoría de los propósitos.

    readLine () « solo lee datos línea por línea desde la secuencia o fuente. Se considera que una línea está terminada por cualquiera de estos: \ n, \ r (o) \ r \ n

  • Scanner divide su entrada en tokens usando un patrón de delimitador, que por defecto coincide con el espacio en blanco (\ s) y es reconocido por Character.isWhitespace .

    « Hasta que el usuario ingrese los datos, la operación de escaneo puede bloquearse, esperando la entrada. « Use Scanner ( BUFFER_SIZE = 1024 ) si desea analizar un tipo específico de token de una secuencia. « Sin embargo, un escáner no es seguro para subprocesos. Tiene que estar sincronizado externamente.

    next () «Busca y devuelve el siguiente token completo de este escáner. nextInt () «Escanea el siguiente token de la entrada como un int.

Código

 String name = null; int number; java.io.BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); name = in.readLine(); // If the user has not entered anything, assume the default value. number = Integer.parseInt(in.readLine()); // It reads only String,and we need to parse it. System.out.println("Name " + name + "\t number " + number); java.util.Scanner sc = new Scanner(System.in).useDelimiter("\\s"); name = sc.next(); // It will not leave until the user enters data. number = sc.nextInt(); // We can read specific data. System.out.println("Name " + name + "\t number " + number); // The Console class is not working in the IDE as expected. java.io.Console cnsl = System.console(); if (cnsl != null) { // Read a line from the user input. The cursor blinks after the specified input. name = cnsl.readLine("Name: "); System.out.println("Name entered: " + name); } 

Entradas y salidas de Stream

 Reader Input: Output: Yash 777 Line1 = Yash 777 7 Line1 = 7 Scanner Input: Output: Yash 777 token1 = Yash token2 = 777 

Hay varias formas de obtener información del usuario. Aquí en este progtwig tomaremos la clase de escáner para lograr la tarea. Esta clase de escáner viene bajo java.util , por lo tanto, la primera línea del progtwig es import java.util.Scanner; que permite al usuario leer valores de varios tipos en Java. La línea de statement de importación debe estar en la primera línea del progtwig Java, y procedemos más allá para el código.

 in.nextInt(); // It just reads the numbers in.nextLine(); // It get the String which user enters 

Para acceder a los métodos en la clase de escáner, cree un nuevo objeto de escáner como “en”. Ahora usamos uno de sus métodos, que es “siguiente”. El método “siguiente” obtiene la cadena de texto que un usuario ingresa en el teclado.

Aquí estoy usando in.nextLine(); para obtener la cadena a la que ingresa el usuario.

 import java.util.Scanner; class GetInputFromUser { public static void main(String args[]) { int a; float b; String s; Scanner in = new Scanner(System.in); System.out.println("Enter a string"); s = in.nextLine(); System.out.println("You entered string " + s); System.out.println("Enter an integer"); a = in.nextInt(); System.out.println("You entered integer " + a); System.out.println("Enter a float"); b = in.nextFloat(); System.out.println("You entered float " + b); } } 
 import java.util.Scanner; public class ScannerDemo { public static void main(String[] arguments){ Scanner input = new Scanner(System.in); String username; double age; String gender; String marital_status; int telephone_number; // Allows a person to enter his/her name Scanner one = new Scanner(System.in); System.out.println("Enter Name:" ); username = one.next(); System.out.println("Name accepted " + username); // Allows a person to enter his/her age Scanner two = new Scanner(System.in); System.out.println("Enter Age:" ); age = two.nextDouble(); System.out.println("Age accepted " + age); // Allows a person to enter his/her gender Scanner three = new Scanner(System.in); System.out.println("Enter Gender:" ); gender = three.next(); System.out.println("Gender accepted " + gender); // Allows a person to enter his/her marital status Scanner four = new Scanner(System.in); System.out.println("Enter Marital status:" ); marital_status = four.next(); System.out.println("Marital status accepted " + marital_status); // Allows a person to enter his/her telephone number Scanner five = new Scanner(System.in); System.out.println("Enter Telephone number:" ); telephone_number = five.nextInt(); System.out.println("Telephone number accepted " + telephone_number); } } 

Puede hacer un progtwig simple para pedir el nombre del usuario e imprimir las entradas de uso de la respuesta.

O solicite al usuario que ingrese dos números y puede agregar, multiplicar, restar o dividir esos números e imprimir las respuestas para las entradas de los usuarios de la misma forma que el comportamiento de una calculadora.

Entonces ahí necesitas la clase de escáner. Tienes que import java.util.Scanner; y en el código que necesitas usar:

 Scanner input = new Scanner(System.in); 

input es un nombre de variable.

 Scanner input = new Scanner(System.in); System.out.println("Please enter your name: "); s = input.next(); // Getting a String value System.out.println("Please enter your age: "); i = input.nextInt(); // Getting an integer System.out.println("Please enter your salary: "); d = input.nextDouble(); // Getting a double 

Vea cómo esto difiere: input.next(); , i = input.nextInt(); , d = input.nextDouble();

De acuerdo con una cadena, int y un doble varía de la misma manera para el rest. No olvides la statement de importación en la parte superior de tu código.

Un simple ejemplo:

 import java.util.Scanner; public class Example { public static void main(String[] args) { int number1, number2, sum; Scanner input = new Scanner(System.in); System.out.println("Enter First multiple"); number1 = input.nextInt(); System.out.println("Enter second multiple"); number2 = input.nextInt(); sum = number1 * number2; System.out.printf("The product of both number is %d", sum); } } 

Hay un problema con el método input.nextInt (): solo lee el valor int.

Entonces al leer la siguiente línea usando input.nextLine () usted recibe “\ n”, es decir, la tecla Enter . Entonces, para omitir esto, debe agregar input.nextLine ().

Pruébalo así:

  System.out.print("Insert a number: "); int number = input.nextInt(); input.nextLine(); // This line you have to add (it consumes the \n character) System.out.print("Text1: "); String text1 = input.nextLine(); System.out.print("Text2: "); String text2 = input.nextLine(); 
  1. Para leer entrada:

     Scanner scanner = new Scanner(System.in); String input = scanner.nextLine(); 
  2. Para leer entrada cuando llamas a un método con algunos argumentos / parámetros:

     if (args.length != 2) { System.err.println("Utilizare: java Grep  "); System.exit(1); } try { grep(args[0], args[1]); } catch (IOException e) { System.out.println(e.getMessage()); } 
 import java.util.*; class Ss { int id, salary; String name; void Ss(int id, int salary, String name) { this.id = id; this.salary = salary; this.name = name; } void display() { System.out.println("The id of employee:" + id); System.out.println("The name of employye:" + name); System.out.println("The salary of employee:" + salary); } } class employee { public static void main(String args[]) { Scanner sc = new Scanner(System.in); Ss s = new Ss(sc.nextInt(), sc.nextInt(), sc.nextLine()); s.display(); } } 

Cuando el usuario ingresa su username , verifique también la entrada válida.

 java.util.Scanner input = new java.util.Scanner(System.in); String userName; final int validLength = 6; // This is the valid length of an user name System.out.print("Please enter the username: "); userName = input.nextLine(); while(userName.length() < validLength) { // If the user enters less than validLength characters // ask for entering again System.out.println( "\nUsername needs to be " + validLength + " character long"); System.out.print("\nPlease enter the username again: "); userName = input.nextLine(); } System.out.println("Username is: " + userName); 

Aquí está la clase completa que realiza la operación requerida:

 import java.util.Scanner; public class App { public static void main(String[] args) { Scanner input = new Scanner(System.in); final int valid = 6; Scanner one = new Scanner(System.in); System.out.println("Enter your username: "); String s = one.nextLine(); if (s.length() < valid) { System.out.println("Enter a valid username"); System.out.println( "User name must contain " + valid + " characters"); System.out.println("Enter again: "); s = one.nextLine(); } System.out.println("Username accepted: " + s); Scanner two = new Scanner(System.in); System.out.println("Enter your age: "); int a = two.nextInt(); System.out.println("Age accepted: " + a); Scanner three = new Scanner(System.in); System.out.println("Enter your sex: "); String sex = three.nextLine(); System.out.println("Sex accepted: " + sex); } } 

Puedes transmitir este código:

 Scanner obj= new Scanner(System.in); String s = obj.nextLine(); 

Puedes usar la clase de escáner en Java

 Scanner scan = new Scanner(System.in); String s = scan.nextLine(); System.out.println("String: " + s); 

Hay una manera simple de leer desde la consola.

Por favor encuentre el siguiente código:

 import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // Reading of Integer int number = sc.nextInt(); // Reading of String String str = sc.next(); } } 

Para una comprensión detallada, consulte los documentos a continuación.

Doc

Ahora hablemos sobre la comprensión detallada del funcionamiento de la clase Scanner:

 public Scanner(InputStream source) { this(new InputStreamReader(source), WHITESPACE_PATTERN); } 

Este es el constructor para crear la instancia de Scanner.

Aquí estamos pasando la referencia InputStream que no es más que un System.In . Aquí abre el InputStream Pipe para la entrada de la consola.

 public InputStreamReader(InputStream in) { super(in); try { sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // ## Check lock object } catch (UnsupportedEncodingException e) { // The default encoding should always be available throw new Error(e); } } 

Pasando el Sistema. En este código se abrirá el socket para leer desde la consola.