Solicitar y validar número en Java

Java: solicitar y validar número

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
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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *