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