logo

Clase de escáner en Java

En Java, Scanner es una clase en el paquete java.util que se utiliza para obtener la entrada de tipos primitivos como int, double, etc. y cadenas.

Usar la clase Scanner en Java es la forma más fácil de leer la entrada en un programa Java, aunque no es muy eficiente si desea un método de entrada para escenarios donde el tiempo es una restricción, como en la programación competitiva.



Tipos de entrada del escáner Java

La clase de escáner ayuda a tomar el flujo de entrada estándar en Java. Entonces, necesitamos algunos métodos para extraer datos del flujo. Los métodos utilizados para extraer datos se mencionan a continuación:

Método

cómo cambiar el nombre de un directorio en Linux

Descripción



siguienteBooleano()

Se utiliza para leer el valor booleano.

byte siguiente()

Se utiliza para leer el valor del byte.

siguienteDoble()



Se utiliza para leer el valor doble.

siguienteFlotar()

Se utiliza para leer el valor flotante.

siguienteInt()

Utilizado para leer el valor Int

Proxima linea()

Se utiliza para leer el valor de la línea.

siguienteLong()

Utilizado para leer valor largo

siguienteCorto()

comentario de powershell multilínea
Utilizado para leer valor corto

Veamos el fragmento de código para leer datos de varios tipos de datos.

Ejemplos de clase de escáner Java

Ejemplo 1:

Java




// Java program to read data of various types> // using Scanner class.> import> java.util.Scanner;> // Driver Class> public> class> ScannerDemo1 {> >// main function> >public> static> void> main(String[] args)> >{> >// Declare the object and initialize with> >// predefined standard input object> >Scanner sc =>new> Scanner(System.in);> >// String input> >String name = sc.nextLine();> >// Character input> >char> gender = sc.next().charAt(>0>);> >// Numerical data input> >// byte, short and float can be read> >// using similar-named functions.> >int> age = sc.nextInt();> >long> mobileNo = sc.nextLong();> >double> cgpa = sc.nextDouble();> >// Print the values to check if the input was> >// correctly obtained.> >System.out.println(>'Name: '> + name);> >System.out.println(>'Gender: '> + gender);> >System.out.println(>'Age: '> + age);> >System.out.println(>'Mobile Number: '> + mobileNo);> >System.out.println(>'CGPA: '> + cgpa);> >}> }>

>

matriz.ordenar en java

>

Aporte

Geek F 40 9876543210 9.9>

Producción

Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9>

A veces, tenemos que verificar si el siguiente valor que leemos es de un tipo determinado o si la entrada ha finalizado (se encontró un marcador EOF).

Luego, verificamos si la entrada del escáner es del tipo que queremos con la ayuda de las funciones hasNextXYZ() donde XYZ es el tipo que nos interesa. La función devuelve verdadero si el escáner tiene un token de ese tipo; de lo contrario, falso. Por ejemplo, en el siguiente código, hemos utilizado hasNextInt(). Para buscar una cadena, usamos hasNextLine(). De manera similar, para buscar un solo carácter, usamos hasNext().charAt(0).

Ejemplo 2:

Miremos el fragmento de código para leer algunos números de la consola e imprimir su media.

Java




// Java program to read some values using Scanner> // class and print their mean.> import> java.util.Scanner;> public> class> ScannerDemo2 {> >public> static> void> main(String[] args)> >{> >// Declare an object and initialize with> >// predefined standard input object> >Scanner sc =>new> Scanner(System.in);> >// Initialize sum and count of input elements> >int> sum =>0>, count =>0>;> >// Check if an int value is available> >while> (sc.hasNextInt()) {> >// Read an int value> >int> num = sc.nextInt();> >sum += num;> >count++;> >}> >if> (count>>0>) {> >int> mean = sum / count;> >System.out.println(>'Mean: '> + mean);> >}> >else> {> >System.out.println(> >'No integers were input. Mean cannot be calculated.'>);> >}> >}> }>

>

cómo convertir una cadena a int java

>

Aporte

1 2 3 4 5>

Producción

Mean: 3>

Puntos importantes sobre la clase de escáner Java

  • Para crear un objeto de la clase Scanner, normalmente pasamos el objeto predefinido System.in, que representa el flujo de entrada estándar. Podemos pasar un objeto de clase Archivo si queremos leer la entrada de un archivo.
  • Para leer valores numéricos de un determinado tipo de datos XYZ, la función a utilizar es nextXYZ(). Por ejemplo, para leer un valor de tipo short, podemos usar nextShort()
  • Para leer cadenas, usamos nextLine().
  • Para leer un solo carácter, usamos next().charAt(0). La función next() devuelve el siguiente token/palabra en la entrada como una cadena y la función charAt(0) devuelve el primer carácter de esa cadena.
  • La clase Scanner lee una línea completa y la divide en tokens. Los tokens son pequeños elementos que tienen algún significado para el compilador de Java. Por ejemplo, supongamos que hay una cadena de entrada: ¿Cómo estás?
    En este caso, el objeto escáner leerá la línea completa y dividirá la cadena en tokens: Cómo, eres y tú. Luego, el objeto itera sobre cada token y lee cada token usando sus diferentes métodos.