Sigue un test que quizás te sirva:
public class NewMain {
public static void main(String[] args) {
System.out.println("Número válido: " + getNumero(1, 100));
}
public static int getNumero(int minimo, int maximo) {
final Scanner scan = new Scanner(System.in, "UTF-8");
int numero = 0;
do {
introduce(minimo, maximo);
while (!scan.hasNextInt()) {
noValido();
introduce(minimo, maximo);
scan.next();
}
numero = scan.nextInt();
if (numero < minimo || numero > maximo) {
noValido();
}
} while (numero < minimo || numero > maximo);
return numero;
}
private static void introduce(int minimo, int maximo) {
System.out.println("Introduzca un número entre " + minimo + " y " + maximo);
}
private static void noValido() {
System.out.println("El número introducido no está en el rango aceptable.");
}
}
Hola estimados, me acabo de registrar en este foro y estoy entrando al mundo de la programación desde hace unos días.
Necesito ayuda con una cosa que no he encontrado en la red, por lo poco que sé hasta ahora imagino que un ciclo while me podría servir, pero no he podido hacerlo funcionar...
Estoy en un proyecto para un juego, donde al comienzo ofrezco ciertos puntos iniciales al jugador, y pido que ingrese valores de 1 a 100 para cada variabe (Fuerza, Destreza, etc). Al ingresar el usuario dicho valor, aparece un calculo de cuantos puntos restantes quedan por asignar.
Sin embargo, tenia problemas con, "Qué pasa si el usuario ingresa un valor mas alto que 100?", y puse una solucion bastante tediosa y casera, que es esta.
if (fuerza > 100 || fuerza < 1) {
System.out.println ("Favor, empiece de nuevo. Ingrese valor para Fuerza");
Scanner scanner1 = new Scanner( System.in );
int fuerza2 = scanner1.nextInt();
fuerza = fuerza2; }
El problema es que si vuelve a ingresar mal, distorsiona todos los valores. Busco una condición que no permita "avanzar" al próximo stat sin ingresar ahi un valor entre 1 y 100, y sin asignar ciclos if y variables infinitamente.
Agradecería mucho su ayuda. Agradecido,
Saludos para todos,
Yeib.