24. La clase Scanner

Con esta clase tenemos la facilidad de obtener lectura de datos desde cualquier dispositivo de entrada en el cual, mediante unos metodos que nos proporciona esta clase nos permitira recuperar dichos datos. Esta clase se encuentra en el paquete java.util.

Esto quiere decir, que para poder utilizar la clase Scanner, primero tendremos que importar su paquete de la siguiente forma:

 

import java.util.Scanner;

public class Ejemplo{

    public static void main(String[]args){

 

    }

}

 

Una vez importado el paquete, podremos utilizar la clase Scanner.

Vamos a realizar un ejemplo. Imaginemos que tenemos una clase que se llama "Ejemplo" e instanciamos la clase Scanner:

 

import java.util.Scanner;

public class Ejemplo{

    public static void main(String[]args){

        Scanner scan = new Scanner(System.in);

    }

}

 

Como vemos en su parametro, incluimos "System.in". Esto es para facilitarle el Stream de entrada, que es donde vamos a recuperar los datos.

El Stream es el flujo de datos para leer y escribir datos.

 

Una vez instanciada la clase Scanner, incluiremos una variable de tipo String llamada "nombre"

 

import java.util.Scanner;

public class Ejemplo{

    public static void main(String[]args){

        Scanner scan = new Scanner(System.in);

        String nombre;

    }

}

 

Ahora, imprimiremos por pantalla lo siguiente:

 

import java.util.Scanner;

public class Ejemplo{

    public static void main(String[]args){

        Scanner scan = new Scanner(System.in);

        String nombre;

        System.out.print("Escribe tu nombre: ");

    }

}

 

Fijate que cuando escribo "print" ya no escribo "println", elimino las letras "ln" que significan "salto de linea" de este modo lo que yo escribire en la consola, se escribira a continuacion de la frase que he escrito.

Bien, ahora le pondre el valor a la variable "nombre" con un metodo de Scanner llamado "next()". Con este metodo conseguire guardar en la variable "nombre" los siguientes "tokens" que haya introducido en la consola.

Los tokens son los "trozos" que hay en la entrada del Stream en ese momento, y cada token esta delimitado por defecto por espacios en blanco.

Por ejemplo, en esta frase hay 6 tokens y delimitado por 5 espacios.

"Curso basico de programacion en Java"

El codigo de nuestra clase quedaria asi:

 

import java.util.Scanner;

public class Ejemplo{

    public static void main(String[]args){

        Scanner scan = new Scanner(System.in);

        String nombre;

        System.out.print("Escribe tu nombre: ");

            nombre = scan.next();

    }

}

 

Entonces, desde la consola se te pediria que introduzcas un dato correspondiente a un token. Por ejemplo, imaginate que ejecutas este ejemplo que estas realizando, pues desde la consola se te pedira que introduzacas un dato, quedaria asi en la consola:

 

Escribe tu nombre: 

 

A espera que introduzcas un dato y luego pulses "intro".

Y ahora vamos a terminar el ejemplo añadiendo lo siguiente:

 

import java.util.Scanner;

public class Ejemplo{

    public static void main(String[]args){

        Scanner scan = new Scanner(System.in);

        String nombre;

        System.out.print("Escribe tu nombre: ");

            nombre = scan.next();

        System.out.println("Tu nombre es "+nombre);

    }

}

 

Y la consola te devolvera lo siguiente:

 

Escribe tu nombre: RoqueCabillo

Tu nombre es RoqueCabillo

 

Ahora vamos a trabajar con numeros. Queremos realizar un ejemplo en el cual tenemos una clase llamada "MisOperaciones" y la implementamos con el siguiente codigo:

 

import java.util.Scanner;

public class MisOperaciones{

    public static void main(String[]args){

        Scanner scan = new Scanner(System.in);

        int num1 = 0;

        int num2 = 0;

        System.out.print("Inserta el primer numero: ");

            num1 = scan.nextInt();

        System.out.print("Inserta el segundo numero: ");

            num2 = scan.nextInt();

        int resultado = num1 + num2;

        System.out.println("El resultado de sumar "+num1+" y "+num2+" es: "+resultado);

    }

}

 

Fijate tambien, que ahora el metodo "next()" ha cambiado y ahora es "nextInt", eso es porque como estamos trabajando con numeros enteros, debes indicarle a Java que estas manipulando enteros, lo mismo con "float", "double"...

 

next()

nextInt()

nextFloat()

nextDouble()

nextLine()