Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Dominando Java Scanner: Guía Completa con Ejemplos Prácticos

Dominando Java Scanner

Descubre cómo usar la clase Scanner de Java para leer texto, números y tipos complejos desde diversas fuentes, respaldado por ejemplos claros del mundo real.

La clase Scanner en java.util te permite capturar entrada desde flujos, archivos, cadenas y la consola. A continuación recorremos sus patrones de uso principales.

Ejemplo 1: Leyendo una Línea Completa de Texto

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        // Crear un Scanner que lee de la entrada estándar
        Scanner entrada = new Scanner(System.in);
        System.out.print("Introduce tu nombre: ");
        // Leer una línea completa, incluyendo espacios
        String nombre = entrada.nextLine();
        System.out.println("Mi nombre es " + nombre);
        entrada.close();
    }
}

Salida

Introduce tu nombre: Kelvin
Mi nombre es Kelvin

Observa la línea Scanner entrada = new Scanner(System.in); – construye un Scanner que escucha la entrada del teclado.

El método nextLine() consume toda la línea hasta un salto de línea.

Importando la Clase Scanner

Antes de poder usar Scanner, impórtalo:

import java.util.Scanner;

Para más sobre importación de paquetes, consulta Paquetes de Java.

Creando Objetos Scanner

Dependiendo de tu fuente de entrada, instancia un Scanner así:

// Desde un flujo de entrada (ej., System.in)
Scanner sc1 = new Scanner(InputStream input);
// Desde un archivo
Scanner sc2 = new Scanner(File file);
// Desde una cadena
Scanner sc3 = new Scanner(String str);

Métodos Principales de Scanner para Entrada

La clase Scanner ofrece una variedad de métodos para leer diferentes tipos de datos. A continuación una referencia rápida:

MétodoDescripción
nextInt()Leer un int
nextFloat()Leer un float
nextBoolean()Leer un boolean
nextLine()Leer una línea completa de texto
next()Leer una sola palabra (hasta espacio en blanco)
nextByte()Leer un byte
nextDouble()Leer un double
nextShort()Leer un short
nextLong()Leer un long

Ejemplo 2: Usando nextInt()

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        System.out.println("Introduce un entero: ");
        int dato1 = entrada.nextInt();
        System.out.println("Usando nextInt(): " + dato1);
        entrada.close();
    }
}

Salida

Introduce un entero: 22
Usando nextInt(): 22

Ejemplo 3: Usando nextDouble()

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        System.out.print("Introduce valor Double: ");
        double valor = entrada.nextDouble();
        System.out.println("Usando nextDouble(): " + valor);
        entrada.close();
    }
}

Salida

Introduce valor Double: 33.33
Usando nextDouble(): 33.33

Ejemplo 4: Usando next()

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        System.out.print("Introduce tu nombre: ");
        String valor = entrada.next();
        System.out.println("Usando next(): " + valor);
        entrada.close();
    }
}

Salida

Introduce tu nombre: Jonny Walker
Usando next(): Jonny

Observa que next() se detiene en el primer espacio en blanco, por lo que solo se captura el primer nombre.

Ejemplo 5: Usando nextLine()

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        System.out.print("Introduce tu nombre: ");
        String valor = entrada.nextLine();
        System.out.println("Usando nextLine(): " + valor);
        entrada.close();
    }
}

Salida

Introduce tu nombre: Jonny Walker
Usando nextLine(): Jonny Walker

A diferencia de next(), nextLine() captura la línea completa, incluyendo espacios, hasta un carácter de nueva línea.

Lectura Recomendada: Java Scanner saltando nextLine()

Scanner con BigInteger y BigDecimal

Para números de alta precisión, Scanner soporta:

Ejemplo: Leyendo BigInteger y BigDecimal

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        System.out.print("Introduce un entero grande: ");
        BigInteger valor1 = entrada.nextBigInteger();
        System.out.println("Usando nextBigInteger(): " + valor1);
        System.out.print("Introduce un decimal grande: ");
        BigDecimal valor2 = entrada.nextBigDecimal();
        System.out.println("Usando nextBigDecimal(): " + valor2);
        entrada.close();
    }
}

Salida

Introduce un entero grande: 987654321
Usando nextBigInteger(): 987654321
Introduce un decimal grande: 9.55555
Usando nextBigDecimal(): 9.55555

Cómo Funciona Scanner Internamente

Scanner lee una línea completa, luego la divide en tokens usando espacio en blanco por defecto. Cada token puede recuperarse con el método apropiado. Por ejemplo, dada la entrada Él tiene 22, los tokens son Él, tiene y 22.

Consejo: Los tokens se separan por espacios, tabulaciones o nuevas líneas a menos que personalices el delimitador.

Java

  1. Palabra clave final en Java: Variables, métodos y clases
  2. Operador instanceof en Java: Guía completa
  3. Dominando la herencia en Java: Conceptos, tipos y ejemplos prácticos
  4. Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
  5. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  6. Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
  7. Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
  8. Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
  9. Dominando Java Scanner: Guía Completa con Ejemplos Prácticos
  10. Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
  11. Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación