8 oct 2014

La clase Scanner en Java

Permite realizar la entrada de datos desde dispositivos como la entrada estándar o los ficheros, proporcionando métodos para la lectura de cadenas y de los tipos básicos.

Ejs.:    Scanner scan1= new Scanner(System.in);
          Scanner scan2= new Scanner(File fich);

Va recogiendo fragmentos (tokens) de la entrada, siendo el separador por defecto el espacio en blanco. Mediante sus métodos se pueden analizar, recuperar y convertir los tokens que se van procesando.

Sus principales métodos son:
o   next() 
devuelve el siguiente elemento en la entrada.
o   hasNext() 
devuelve un valor boolean indicando si existe el siguiente elemento en la entrada.
o   hasNextByte(), hasNextInt(), hasNextFloat, …
devuelven un valor boolean indicando si el tipo del siguiente token coincide con el método, pero sin avanzar ningún token. Por ejemplo hasNextByte() devolvería el valor true si el siguiente token que se recuperaría con nextByte(), fuera un byte.
o   nextByte(), nextInt, nextFloat, …
devuelve el siguiente token como un valor del tipo indicado por el método. Por ejemplo nextByte() devolverá un byte.
o   useDelimiter(String delim)
cambia el delimitador de tokens por defecto, con el nuevo valor.


Ejemplo de uso de Scanner desde la entrada estándar

package esscanner;
import java.util.Scanner;
public class ESScanner {
    public static void main(String[] args) {
       boolean var_boolean;
       char var_char;
       int var_int;
       float var_float;
       String cadena;
       Scanner scan = new Scanner(System.in);
       System.out.printf(Escriba un boolean : ");
       var_boolean = scan.nextBoolean();
       scan.nextLine();
       System.out.printf(Escriba un char    : ");
       cadena = scan.nextLine();
       var_char = cadena.charAt(0);
       System.out.printf(Escriba un int: ");
       var_int = scan.nextInt();
       System.out.printf(Escriba un float: ");
       var_float = scan.nextFloat();
       scan.nextLine();
       System.out.printf(Escriba una frase: ");
       cadena = scan.nextLine();
       System.out.printf("var_boolean = %b%n", var_boolean);
       System.out.printf("var_char  = %c%n", var_char);
       System.out.printf("var_int     = %d%n", var_int);
       System.out.printf("var_float  = %14.9f%n", var_float);
       System.out.printf(Frase: %s%n", cadena);
    }
}


Ejemplo de uso de Scanner utilizando ficheros

package es_fich_scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
/*
 * Lee un fichero de texto línea a línea
 * mostrándolo por pantalla
 * Lee un fichero de enteros delimitado por # y lo muestra
 */

public class ES_fich_Scanner {
    public static void main(String[] args) throws FileNotFoundException {
        File f = new File("fich_lineas.txt");
        Scanner scan = new Scanner(f);
        while (scan.hasNextLine()) {
            System.out.println(scan.nextLine());
        }
        File f2 = new File("fich_num.txt");
        scan = new Scanner(f2);
        scan.useDelimiter("#");
        while (scan.hasNextInt()) {
            System.out.println(scan.nextInt());
        }
    }
}


No hay comentarios:

Publicar un comentario