Analizador léxico simple. Se construye sobre algún
tipo de fuente de caracteres:
Scanner (String source)
Scanner (Readable source)
Scanner (Reader source)
Scanner (InputStream source)
Scanner (File source)
Sobre la fuente de caracteres, va seleccionando lexemas (tokens) separados por espacio en blanco. Proporciona los resultados por medio de una interface Iterator:
String s = "Martes, 13 de septiembre de 2005, actualizado a las 16:16 h."; Scanner scanner = new Scanner(s);
for (Iterator it = scanner; it.hasNext(); ) { String token = (String) it.next(); System.out.println(token); } |
Martes, 13 de septiembre de 2005, actualizado a las 16:16 h. |
Se puede parametrizar Scanner para que utilice
cualquier otro tipo de separador de tokens.
Además, ofrece una serie de métodos que, habiendo
leído un token, lo intentan interpretar como algún tipo primitivo de
java:
int nextInt() |
double nextDouble() |
boolean nextBoolean() |
byte nextByte() |
float nextFloat() |
|
short nextShort() |
|
|
long nextLong() |
|
|
Para analizar valores numéricos se emplean los
convenios locales de puntuación.
Dichos métodos intentan interpretar el token que
toca leer, lanzando una excepción si no puede:
·
InputMismatchException si el token no responde al tipo
deseado
·
NoSuchElementException si no quedan más tokens
Por último cabe mencionar el método
String nextLine()
que devuelve lo que queda por leer de la línea
actual; es decir, desde donde estemos hasta el primer fin de línea. Llamadas
consecutivas a nextLine() van proporcionando líneas sucesivas de texto.
Temas relacionados
Las Bibliotecas de Java
Ejemplo: interacción con consola
Ejemplo: entrada de datos por consola