java scanner class tutorial with examples
En este tutorial, discutiremos cómo importar y usar la clase de escáner de Java junto con sus varios métodos, API de escáner y ejemplos:
Ya hemos visto los métodos estándar de entrada y salida utilizados por Java para leer / escribir datos en los dispositivos de E / S estándar.
Java proporciona otro mecanismo más para leer la entrada del usuario. Esta es la clase Scanner. Aunque no es muy eficiente, la clase Scanner es la forma más fácil y preferida de leer entradas en programas Java.
=> Consulte TODOS los tutoriales de Java aquí.
Lo que vas a aprender:
Clase de escáner Java: una mirada en profundidad
La clase de escáner se usa principalmente para escanear la entrada y leer la entrada de tipos de datos primitivos (incorporados) como int, decimal, double, etc. La clase de escáner básicamente devuelve la entrada tokenizada basada en algún patrón delimitador. Por lo tanto, en general, si desea leer el tipo dt, puede usar la función nextdt () para leer la entrada.
Una clase Scanner implementa las interfaces Iterator (string), Closeable y AutoCloseable.
Exploremos ahora los detalles de esta clase de escáner.
Importar escáner
La clase de escáner pertenece al paquete 'java.util'. Por lo tanto, para usar la clase Scanner en su programa, debe importar este paquete de la siguiente manera.
import java.util.*
O
import java.util.Scanner;
Cualquiera de las declaraciones anteriores importará la clase Scanner y su funcionalidad en su programa.
Clase de escáner Java
Una vez que la clase Scanner se importa al programa Java, puede usarla para leer la entrada de varios tipos de datos. Dependiendo de si desea leer la entrada de la entrada estándar o del archivo o canal, puede pasar el objeto predefinido apropiado al objeto del escáner.
A continuación se muestra un ejemplo básico del uso de la clase Scanner.
|_+_|Producción:
En el programa anterior, hemos proporcionado el 'System.in' (entrada estándar) como el objeto al crear un objeto de clase Scanner. Luego leemos una entrada de cadena de la entrada estándar.
API de escáner (constructores y métodos)
En esta sección, exploraremos la API de la clase Scanner en detalle. La clase de escáner contiene varios constructores sobrecargados para acomodar varios métodos de entrada como System.in, entrada de archivo, ruta, etc.
La siguiente tabla proporciona el prototipo y la descripción de cada uno de los constructores de la clase Scanner.
¿Qué es un archivo 7z?
No | Prototipo | Descripción |
---|---|---|
7 | Escáner (origen de la ruta, nombre del conjunto de caracteres de la cadena) | Este constructor construye un nuevo escáner que escanea el archivo especificado y produce los valores |
1 | Escáner (fuente InputStream) | Este constructor construye un nuevo escáner que escanea el nuevo InputStream, genera y produce los valores |
2 | Escáner (fuente InputStream, String charsetName) | Este constructor construye un nuevo escáner que escanea el nuevo InputStream, genera y produce los valores |
3 | Escáner (fuente de archivo) | Este constructor construye un nuevo escáner que escanea el archivo especificado y produce los valores |
4 | Escáner (origen del archivo, cadena de caracteres nombre del conjunto) | Este constructor construye un nuevo escáner que escanea el archivo especificado y produce los valores |
5 | Escáner (fuente de cadena) | Este constructor construye un nuevo escáner que escanea la cadena especificada y produce los valores |
6 | Escáner (fuente de ruta) | Este constructor construye un nuevo escáner que escanea el archivo especificado y produce los valores |
8 | Escáner (fuente legible) | Este constructor construye un nuevo escáner que escanea la fuente especificada y produce los valores |
9 | Escáner (fuente ReadableByteChannel) | Este constructor construye un nuevo escáner que escanea el canal especificado y produce los valores |
10 | Escáner (fuente ReadableByteChannel, String charsetName) | Este constructor construye un nuevo escáner que escanea el canal especificado y produce los valores |
Al igual que los constructores, la clase Scanner también proporciona numerosos métodos que se utilizan para escanear y leer la entrada. Proporciona varios métodos booleanos que le permiten verificar si el siguiente token en la entrada es un token de un tipo de datos en particular.
Tenga en cuenta que para cada constructor, puede proporcionar solo un argumento con el objeto de entrada predefinido o dos argumentos que constan de un objeto de entrada predefinido y un conjunto de caracteres. En el caso de un argumento, se asume el juego de caracteres predeterminado.
También existen métodos para recuperar tokens de cada tipo de datos.
Otros métodos incluyen aquellos para establecer la configuración regional, la base, los patrones de coincidencia, cerrar el escáner, etc.
La siguiente tabla proporciona el prototipo y la descripción de cada uno de los métodos básicos del escáner.
No | Prototipo | Descripción |
---|---|---|
7 | Booleano hasNextFloat () | Comprueba si el siguiente token en la entrada del escáner es de tipo flotante |
1 | Booleano hasNext () | Devuelve verdadero si hay otro token en la entrada del escáner. |
2 | Booleano hasNextBigDecimal () | Comprueba si el siguiente token en la entrada del escáner es de tipo bigDecimal. |
3 | Booleano hasNextBigInteger () | Comprueba si el siguiente token en la entrada del escáner es de tipo bigInteger |
4 | Boolean hasNextBoolean () | Comprueba si el siguiente token en la entrada del escáner es de tipo booleano |
5 | Booleano hasNextByte () | Comprueba si el siguiente token en la entrada del escáner es de tipo Byte |
6 | Booleano hasNextDouble () | Comprueba si el siguiente token en la entrada del escáner es de tipo doble |
8 | Booleano hasNextInt () | Comprueba si el siguiente token en la entrada del escáner es de tipo entero |
9 | Booleano hasNextLine () | Comprueba si el siguiente token en la entrada del escáner es otra línea |
10 | Booleano hasNextLong () | Comprueba si el siguiente token en la entrada del escáner es de tipo largo |
11 | Booleano hasNextShort () | Comprueba si el siguiente token en la entrada del escáner es de tipo corto |
12 | Cadena siguiente () | Escanea la entrada para el siguiente token completo |
13 | BigDecimal nextBigDecimal () | Escanea la entrada para el próximo token BigDecimal |
14 | BigInteger nextBigInteger () | Escanea la entrada para el próximo token BigInteger |
15 | Booleano nextBoolean () | Escanea la entrada para el siguiente token booleano |
16 | Byte nextByte () | Escanea la entrada para el siguiente token de Byte |
17 | Doble siguiente Doble () | Escanea la entrada para el siguiente token doble |
18 | Float nextFloat () | Escanea la entrada para el siguiente token flotante |
19 | Int nextInt () | Escanea la entrada para el siguiente token entero |
20 | Cadena nextLine () | Obtener la cadena de entrada omitida del objeto Scanner |
21 | Long nextLong () | Escanea la entrada para el siguiente token de entero largo |
22 | Corto nextShort () | Escanea la entrada para el siguiente token de entero corto |
23 | Reinicio del escáner () | Restablecer el escáner actualmente en uso |
24 | Saltar escáner () | Ignore los delimitadores y omita la entrada que coincida con el patrón dado |
25 | Uso del escánerDelimiter () | Establecer el patrón delimitador en el patrón especificado |
26 | Escáner useLocale () | Establecer el objeto de configuración regional de Scanners con la configuración regional dada |
27 | Escáner useRadix () | Establecer la base especificada como la base predeterminada para Scanner |
28 | Int radix () | Devuelve la base predeterminada del escáner actual |
29 | anular eliminar () | Se puede usar cuando el iterador no admite la operación de eliminación |
30 | Transmitir tokens () | Devuelve un flujo de tokens separados por delimitadores del escáner actual |
31 | Cadena toString () | La representación de la cadena de retorno del escáner dado actualmente en uso |
32 | IOException ioException () | Devuelve la IOException lanzada por última vez por legible del objeto Scanner |
33 | Stream findALL () | Devuelve el flujo de resultados de coincidencia que coinciden con el patrón dado. |
34 | Cadena findInLine () | Encuentre la siguiente aparición del patrón de la cadena dada; ignora los delimitadores |
35 | Cadena findWithinHorizon () | Encuentre la siguiente aparición del patrón de la cadena dada; ignora los delimitadores |
36 | Delimitador de patrón () | Devuelve el patrón utilizado por el escáner actual. |
37 | Cierre vacío () | Cierra el escáner |
38 | MatchResult match () | Devuelve el resultado coincidente de la última operación de escaneo. |
39 | Local local () | Devolver la configuración regional del escáner actual |
Controlar aquí para saber más sobre los métodos de escáner.
¿Cómo utilizar el escáner en Java?
Ahora que ha visto los diversos constructores y métodos proporcionados por la clase Scanner, implementemos algunos de los ejemplos para demostrar cómo usar la clase Scanner en Java.
La siguiente implementación muestra el uso de la clase Scanner para leer la entrada de System.in, es decir, la entrada estándar.
Aquí usamos un objeto System.in predefinido para crear un objeto Scanner. Luego se le pide al usuario que ingrese el nombre, la clase y el porcentaje. Todos estos detalles se leen utilizando el objeto de clase Scanner.
Tenga en cuenta los métodos utilizados por los objetos del escáner para leer diferentes tipos de entrada. Como el nombre es una cadena, el objeto Scanner usa el método next (). Para la entrada de clase, usa nextInt () mientras que para el porcentaje usa nextFloat ().
De esta manera, puede segregar fácilmente la entrada mientras lee.
La salida del programa muestra la entrada que se ingresa y la información que se muestra.
|_+_|Producción:
Cadena de escáner
Como ya se mencionó, puede utilizar varios objetos predefinidos al crear un objeto de escáner. Esto significa que puede leer la entrada de la entrada estándar, archivos y varios canales de E / S o también de cadenas.
Cuando se usa una entrada de cadena, también puede usar expresiones regulares dentro de ella.
Los siguientes ejemplos muestran el programa en el que Scanner utiliza una cadena como entrada. Esta entrada luego se escanea y los tokens se separan leyendo cada token.
Los tokens leídos se muestran en la salida.
|_+_|Producción:
Cerrar escáner
La clase Java Scanner utiliza el método 'Close ()' para cerrar el escáner. La clase Scanner también implementa internamente una interfaz Closeable y, por lo tanto, si el Scanner aún no está cerrado, la interfaz Readable subyacente invoca su método de cierre.
Es una buena práctica de programación cerrar explícitamente el escáner usando el método Close () una vez que haya terminado de usarlo.
Nota: Si el objeto del escáner se cierra y se intenta realizar una búsqueda, el resultado es 'IllegalStateException'.
Preguntas frecuentes
P # 1) ¿Qué es la clase Scanner en Java?
Responder: La clase Scanner es parte del paquete 'java.util' de Java y se usa para leer la entrada de diferentes tipos de datos primitivos como int, float, strings, etc.
cambiar char a int c ++
P # 2) ¿Cuál es la diferencia entre los métodos next () y nextLine () de la clase Scanner?
Responder: El método next () lee la entrada hasta el espacio y coloca el cursor en la misma línea después de leer la entrada. Sin embargo, el método nextLine () lee toda la línea de entrada hasta el final de la línea, incluidos los espacios.
P # 3) ¿Qué es hasNext () en Java?
Responder: El método hasNext () es uno de los métodos de Java Scanner. Este método devuelve verdadero si el escáner tiene otro token en la entrada.
P # 4) ¿Necesita cerrar una clase de escáner?
Responder: Es mejor, pero no obligatorio, cerrar la clase Scanner como si no estuviera cerrada, la interfaz legible subyacente de la clase Scanner hace el trabajo por usted. Sin embargo, el compilador puede mostrar alguna advertencia si no está cerrado.
Por tanto, como buena práctica de programación, cierre siempre el escáner.
P # 5) ¿Cuál es el propósito de 'system.in' en la clase Scanner?
Responder: Al utilizar 'System.in' en la clase de escáner, está permitiendo que el escáner lea el teclado conectado a los datos de entrada estándar.
Conclusión
En este tutorial, hemos visto la clase Scanner y todos sus detalles, incluida la API y la implementación. La clase de escáner se utiliza para leer datos de entrada de una variedad de medios como entrada estándar, archivos, canales IO, cadenas con / sin expresiones regulares, etc.
Aunque Scanner no es una forma muy eficiente de leer la entrada, es una de las formas más fáciles. El escáner le permite leer la entrada de varios tipos de datos primitivos como int, float, cadenas, etc. Cuando usa cadenas como un objeto de entrada para la clase Scanner, también puede usar expresiones regulares con él.
La clase Scanner también le permite leer la entrada haciendo coincidir algún patrón o delimitador.
Para concluir, usar la clase Scanner en Java sigue siendo la forma más fácil y preferida de leer la entrada.
=> Consulte la guía de formación de Java perfecta aquí.
Lectura recomendada
- ¿Qué es Java Vector | Tutorial de clase de vector de Java con ejemplos
- Tutorial de clase de matriz de Java - clase java.util.Arrays con ejemplos
- Tutorial de JAVA para principiantes: más de 100 tutoriales prácticos en vídeo de Java
- Tutorial de interfaz Java y clase abstracta con ejemplos
- Tutorial de reflexión de Java con ejemplos
- Matriz irregular en Java - Tutorial con ejemplos
- Tutorial de longitud de matriz de Java con ejemplos de código
- Tutorial de cadenas de Java | Métodos de cadena de Java con ejemplos