En este post de programación en Java te enseñaré a solicitar un número por teclado pero asegurándonos de que el número realmente es válido y que se encuentra dentro de un rango.

De este modo vamos a poder validar números, ya que si el usuario ingresa una cadena o un número inválido vamos a indicarlo, y no vamos a dejar de solicitar el número hasta que el mismo sea válido.

Lo mismo sucede para el otro caso: además de validar que el valor sea numérico, vamos a comprobar que se encuentre en un rango.

De este modo validaremos números en Java usando la clase Scanner.

Explicación del algoritmo

El funcionamiento va a estar encerrado dentro de un método en donde habrá un ciclo while infinito. Dentro del ciclo vamos a solicitar el número, leer si es un entero y en caso de que esté en el rango vamos a devolverlo.

En caso contrario vamos a consumir lo que haya en el escáner invocando a next, y el ciclo se repetirá hasta que el usuario ingrese un número válido.

Validar número en Java

Solicitar y validar número en Java

La función de Java queda así:

// https://parzibyte.me/blog/
public static int solicitarNumeroValido(String mensaje, int minimo, int maximo) {
    Scanner s = new Scanner(System.in);
    int numero;
    while (true) {
        System.out.println(mensaje);
        if (s.hasNextInt()) {
            numero = s.nextInt();
            if (numero >= minimo && numero <= maximo) {
                return numero;
            } else {
                System.out.println("Número fuera de rango. Intente de nuevo");
            }
        } else {
            s.next();
        }
    }
}

Los parámetros que recibe son el mensaje que se muestra para solicitar el número así como el mínimo y máximo para el rango del número. Un ejemplo del modo de uso es el siguiente:

package me.parzibyte;
import java.util.Scanner;

public class Main {

    // https://parzibyte.me/blog/
    public static int solicitarNumeroValido(String mensaje, int minimo, int maximo) {
        Scanner s = new Scanner(System.in);
        int numero;
        while (true) {
            System.out.println(mensaje);
            if (s.hasNextInt()) {
                numero = s.nextInt();
                if (numero >= minimo && numero <= maximo) {
                    return numero;
                } else {
                    System.out.println("Número fuera de rango. Intente de nuevo");
                }
            } else {
                s.next();
            }
        }
    }
    // https://parzibyte.me/blog/
    public static void main(String[] args) {
        int numero = solicitarNumeroValido("Ingresa un número entre 1 y 5: ", 1, 5);
        System.out.println("El número ingresado es: " + numero);
    }
}

Nota: como puedes ver, el método crea un Scanner. En ocasiones cuando es llamado y hay otras instancias de Scanner en el programa, ocurren errores.

Si tienes problemas y vas a usar varios Scanner, te recomiendo utilizar una única estancia y compartirla en todo el programa.

Para terminar te dejo con más tutoriales para aprender Java.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto