¿Qué es scanner.nextInt en Java?

| Última modificación: 7 de agosto de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

El scanner.nextInt es un método que lee datos de usuario en Java y hace parte de la clase Scanner. Veamos en profundidad en qué consiste este método, cómo funciona y en qué aplicaciones debe usarse.

¿Qué es scanner.nextInt en Java?

¿Qué es scanner.nextInt?

El scanner.nextInt es un método que se utiliza para leer el siguiente token de entrada como un int o número entero. Dentro de la clase Scanner, que pertenece al paquete java.util, se encuentra este método, junto a otros que sirven a finalidades similares.

Esta clase facilita la lectura de datos de diferentes fuentes, como la entrada estándar (teclado), archivos y cadenas de texto.

El método scanner.nextInt tiene dos variantes principales:

  • public int nextInt(): Lee el siguiente token de entrada como un entero utilizando la base (radix) predeterminada, que es 10.
  • public int nextInt(int radix): Lee el siguiente token de entrada como un entero utilizando la base especificada.

Veamos un ejemplo de su uso

En este ejemplo vamos a leer un número entero desde la entrada estándar del teclado:

import java.util.Scanner;

public class TestScanner {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Introduce un número entero:");
int numero = scanner.nextInt();
System.out.println("El número introducido es: " + numero);
scanner.close();
}
}

En este caso se crea una instancia de Scanner que lee desde la entrada estándar (System.in). El usuario introduce un número entero, que es leído por scanner.nextInt y luego se imprime en la consola.

El resultado sería algo como:

Introduce un número entero:
42
El número introducido es: 42

Manejo de excepciones con scanner.nextInt

Es importante tener en cuenta que scanner. nextInt puede lanzar varias excepciones:

Veamos un ejemplo de cómo manejar estas excepciones al leer enteros con scanner. nextInt.

import java.util.InputMismatchException;
import java.util.NoSuchElementException;
import java.util.Scanner;

public class TestScannerWithExceptionHandling {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Introduce un número entero:");
try {
int numero = scanner.nextInt();
System.out.println("El número introducido es: " + numero);
} catch (InputMismatchException e) {
System.out.println("Error: El valor introducido no es un número entero.");
} catch (NoSuchElementException e) {
System.out.println("Error: No se encontraron más tokens.");
} catch (IllegalStateException e) {
System.out.println("Error: El Scanner está cerrado.");
} finally {
scanner.close();
}
}
}

En este ejemplo se han manejado las posibles excepciones que pueden ocurrir al usar scanner.nextInt. Esto garantiza que el programa no falle abruptamente si el usuario introduce un valor no válido.

Las salidas posibles son:

Ejecución y resultados posibles

Caso normal (sin excepciones):

  • Entrada del usuario: 25
  • Salida:
    Introduce un número entero:
    25
    El número introducido es: 25

    Caso de InputMismatchException:

    • Entrada del usuario: abc
    • Salida:
    Introduce un número entero:
    abc
    Error: El valor introducido no es un número entero.

    Caso de NoSuchElementException:

    • Entrada del usuario: (presiona Enter sin introducir un valor)
    • Salida:
    Introduce un número entero:
    Error: No se encontraron más tokens.

    Uso avanzado de scanner.nextInt con radix

    El método scanner. nextInt(int radix) permite leer enteros en diferentes bases numéricas. La base (radix) puede ser cualquier valor entre Character.MIN_RADIX y Character.MAX_RADIX, que son 2 y 36, respectivamente.

    Veamos un ejemplo de cómo usar scanner.nextInt con un radix específico.

    import java.util.Scanner;

    public class TestScannerWithRadix {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Introduce un número binario:");
    int numeroBinario = scanner.nextInt(2);
    System.out.println("El número binario introducido es: " + numeroBinario);

    System.out.println("Introduce un número hexadecimal:");
    int numeroHexadecimal = scanner.nextInt(16);
    System.out.println("El número hexadecimal introducido es: " + numeroHexadecimal);

    scanner.close();
    }
    }

    En este ejemplo se han leído números en base 2 (binario) y base 16 (hexadecimal). El usuario puede introducir un número en la base especificada, y scanner.nextInt lo convierte al correspondiente valor entero.

    El método scanner.nextInt es un método bastante versátil en Java y nos permite leer enteros desde la entrada. Si te interesa este tema y otros relacionados con Java, no dudes en unirte al bootcamp de Java, en el que aprenderás todas las bases teóricas y prácticas para incursionar en un mercado laboral lleno de oportunidades grandiosas. ¡Anímate ahora e inscríbete en la mejor comuidad!

    Ramón Maldonado

    Full Stack Developer y Responsable de Formación base en KeepCoding.

    Posts más leídos

    ¡CONVOCATORIA ABIERTA!

    Java y Spring Boot

    Full Stack Bootcamp

    Clases en Directo | Profesores en Activo | Temario 100% actualizado