Clase Scanner en Java (con Ejemplos)

IO

El uso de la clase Scanner es una de las mejores maneras de ingresar datos por teclado en Java.

Scanner es una clase en el paquete java.util utilizada para obtener la entrada de los tipos primitivos como int, double etc. y también String. Es la forma más fácil de leer datos en un programa Java, aunque no es muy eficiente si se quiere un método de entrada para escenarios donde el tiempo es una restricción, como en la programación competitiva.

En resumen:

  • Para crear un objeto de clase Scanner, normalmente pasamos el objeto predefinido System.in, que representa el flujo de entrada estándar. Podemos pasar un objeto de clase File si queremos leer la entrada de un archivo.
  • Para leer valores numéricos de un determinado tipo de datos XYZ, la función que se utilizará es nextXYZ(). Por ejemplo, para leer un valor de tipo short, podemos usar nextShort().
  • Para leer cadenas (strings), usamos nextLine().
  • Para leer un solo carácter, se usa next().charAt(0). La función next()devuelve el siguiente token/palabra en la entrada como cadena y la función charAt (0) devuelve el primer carácter de esa cadena.

Ejemplos con la clase Scanner

Echemos un vistazo al fragmento de código para leer datos de varios tipos de datos.

Ejemplo:

// Programa Java para leer datos de varios tipos usando la clase Scanner
import java.util.Scanner;

public class ScannerDemo
{
    public static void main(String[] args)
    {
        // Declarar el objeto e inicializar con
        // el objeto de entrada estándar predefinido

        Scanner sc = new Scanner(System.in);

        // entrada de una cadena
        String name = sc.nextLine();

        // entrada de un carácter
        char gender = sc.next().charAt(0);

        // Entrada de datos numéricos
        // byte, short y float
        int age = sc.nextInt();
        long mobileNo = sc.nextLong();
        double average = sc.nextDouble();

        // Imprima los valores para verificar si la entrada
        // fue obtenida correctamente.
        System.out.println("Nombre: "+name);
        System.out.println("Género: "+gender);
        System.out.println("Edad: "+age);
        System.out.println("Teléfono: "+mobileNo);
        System.out.println("Promedio: "+average);
    }
}

Entrada:

Alex
masculino
23
92578458
20

Salida:

Nombre: Alex
Género: m
Edad: 23
Teléfono: 92578458
Promedio: 20.0

Ejemplo con hasNextXYZ()

A veces, debemos verificar si el siguiente valor que leemos es de cierto tipo o si la entrada ha finalizado (se encontró el marcador EOF).

Luego, verificamos si la entrada del Scanner es del tipo que queremos con la ayuda de las funciones hasNextXYZ() donde XYZ es del tipo que nos interesa. La función devuelve true (verdadero) si el scanner tiene un token de ese tipo, de lo contrario es false (falso). Por ejemplo, en el siguiente código, hemos utilizado hasNextInt(). Para verificar una cadena, usamos hasNextLine(). De manera similar, para verificar si hay un solo carácter, usamos hasNext().CharAt(0).

Echemos un vistazo al fragmento de código para leer algunos números de la consola e imprimir su media.

Ejemplo:

// Programa Java para leer algunos valores usando la clase Scanner
// e imprimir su media
import java.util.Scanner;

public class ScannerDemo2
{
    public static void main(String[] args)
    {
        // Declarar un objeto e inicializar con
        // el objeto de entrada estándar predefinido
        Scanner sc = new Scanner(System.in);

        // Inicializar la suma y el recuento
        // de los elementos de entrada
        int sum = 0, count = 0;

        // Compruebe si un valor int está disponible
        while (sc.hasNextInt())
        {
            // Lee un valor int
            int num = sc.nextInt();
            sum += num;
            count++;
        }
        int mean = sum / count;
        System.out.println("La media es: " + mean);
    }
}

Entrada:

1
2
3
4
5
6.0

Salida:

La media es: 3
Java
  • Clase Scanner

Sobre el Autor:

Hey hola! Yo soy Alex Walton y tengo el placer de compartir conocimientos hacía ti sobre el tema de Programación en Java, desde cero, Online y Gratis.

Deja una Respuesta

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.