Clase Scanner de Java
java.util.Scanner es una nueva característica de Java 5. Podemos usar la clase Scanner para obtener la entrada del usuario.
La siguiente es la sintaxis básica para crear un objeto Scanner:
A continuación, demostramos una entrada de datos muy simple y obtenemos la cadena de entrada mediante los métodos next() y nextLine() de la clase Scanner. Antes de leer, generalmente necesitamos usar hasNext y hasNextLine para determinar si todavía hay datos de entrada:
Usando el método next:
Código del archivo ScannerDemo.java:
El resultado de ejecutar el programa anterior es:
$ javac ScannerDemo.java $ java ScannerDemo next方式接收: ejemplo com 输入的数据为:ejemplo
Se puede ver que la cadena 'com' no se muestra. A continuación veamos nextLine.
Usando el método nextLine:
Código del archivo ScannerDemo.java:
El resultado de ejecutar el programa anterior es:
$ javac ScannerDemo.java $ java ScannerDemo nextLine方式接收: ejemplo com 输入的数据为:ejemplo com
Se puede ver que la cadena 'com' se muestra.
Diferencia entre next() y nextLine()
next():
- 1. Debe leer un carácter válido antes de poder terminar la entrada.
- 2. El método next() elimina automáticamente los espacios en blanco encontrados antes de un carácter válido.
- 3. Solo después de ingresar un carácter válido, los espacios en blanco posteriores se utilizan como separadores o terminadores.
- next() no puede obtener cadenas con espacios.
nextLine():
- 1. Usa Enter como terminador, es decir, el método nextLine() devuelve todos los caracteres antes de ingresar Enter.
- 2. Puede obtener espacios en blanco.
Si desea ingresar datos de tipo int o float, la clase Scanner también los admite, pero antes de ingresar es mejor usar el método hasNextXxx() para verificar y luego usar nextXxx() para leer:
Código del archivo ScannerDemo.java:
El resultado de ejecutar el programa anterior es:
$ javac ScannerDemo.java $ java ScannerDemo 输入整数:12 整数数据:12 输入小数:1.2 小数数据:1.2
En el siguiente ejemplo, podemos ingresar varios números y calcular su suma y promedio. Cada número se confirma con Enter. Al ingresar algo que no sea un número, se finaliza la entrada y se muestra el resultado:
Código del archivo ScannerDemo.java:
El resultado de ejecutar el programa anterior es (ingrese un no número para finalizar la entrada):
$ javac ScannerDemo.java $ java ScannerDemo 请输入数字: 12 23 15 21.4 end 4个数的和为71.4 4个数的平均值是17.85
Métodos comunes
| Método | Descripción |
|---|---|
| Constructores | |
Scanner(File source) |
Crear Scanner desde un archivo |
Scanner(InputStream source) |
Crear Scanner desde un flujo de entrada |
Scanner(String source) |
Crear Scanner desde una cadena |
| Métodos básicos de entrada | |
boolean hasNext() |
Comprueba si hay un siguiente token (separado por espacios) |
String next() |
Lee el siguiente token (cadena) |
boolean hasNextLine() |
Comprueba si hay una siguiente línea |
String nextLine() |
Lee el contenido de la siguiente línea |
| Métodos de verificación de tipos | |
boolean hasNextInt() |
Comprueba si el siguiente token es un entero |
boolean hasNextDouble() |
Comprueba si el siguiente token es un número de coma flotante de doble precisión |
boolean hasNextBoolean() |
Comprueba si el siguiente token es un valor booleano |
| Métodos de lectura de tipos | |
int nextInt() |
Lee el siguiente entero |
double nextDouble() |
Lee el siguiente número de coma flotante de doble precisión |
boolean nextBoolean() |
Lee el siguiente valor booleano |
long nextLong() |
Lee el siguiente entero largo |
float nextFloat() |
Lee el siguiente número de coma flotante de precisión simple |
short nextShort() |
Lee el siguiente entero corto |
byte nextByte() |
Lee el siguiente byte |
| Control de delimitadores | |
Scanner useDelimiter(String pattern) |
Establecer el patrón de delimitador |
Scanner useDelimiter(Pattern pattern) |
Establecer el delimitador usando expresiones regulares |
String delimiter() |
Devuelve el patrón de delimitador actual |
| Otros métodos | |
void close() |
Cerrar el escáner |
Scanner skip(Pattern pattern) |
Omite la entrada que coincide con el patrón especificado |
Scanner skip(String pattern) |
Omite la entrada que coincide con la cadena especificada |
String findInLine(Pattern pattern) |
Busca el patrón especificado en la línea actual |
String findInLine(String pattern) |
Busca la cadena especificada en la línea actual |
Scanner reset() |
Restablecer el escáner |
Locale locale() |
Devuelve la configuración regional actual del escáner |
Scanner useLocale(Locale locale) |
Establece la configuración regional del escáner |
Para más contenido, consulte la documentación de la API:https://www.example.com/manual/jdk11api/java.base/java/util/Scanner.html。
Otras extensiones