Hola buenas,
hace unos días creé una clase Teclado desde la que recojo los tipos de datos que necesito.
La dejo por aquí:
Código:
package teclado;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Teclado {
// //////////////////////// INT //////////////////////// //
// Int cualquiera
public static int numInt() {
boolean error;
int numero = 0;
Scanner teclado = new Scanner(System.in);
do {
try {
numero = teclado.nextInt();
error = false;
} catch (InputMismatchException e) {
System.out.println("Introduce un numero valido.");
error = true;
teclado.nextLine();
}
} while (error);
teclado.close();
return numero;
}
// Int que se compare con un valor mínimo/máximo pasado como parametro
public static int numInt(int tipo, int maxmin) {
boolean error;
int numero = 0;
Scanner teclado = new Scanner(System.in);
do {
try {
numero = teclado.nextInt();
if (tipo == 1 & numero >= maxmin)
error = false;
else if (tipo == 2 & numero <= maxmin)
error = false;
else if (tipo == 3 & numero > maxmin)
error = false;
else if (tipo == 4 & numero < maxmin)
error = false;
else {
error = true;
System.out.println("Introduce un numero valido.");
teclado.nextLine();
}
} catch (InputMismatchException e) {
System.out.println("Introduce un numero valido.");
error = true;
teclado.nextLine();
}
} while (error);
teclado.close();
return numero;
}
// Int que debe estar entre un valor mínimo y un valor máximo admisibles,
// que se le pasarán como parámetros
public static int numInt(int tipo, int min, int max) {
boolean error;
int numero = 0;
Scanner teclado = new Scanner(System.in);
do {
try {
numero = teclado.nextInt();
error = false;
if (tipo == 1 & numero >= min & numero <= max)
error = false;
else if (tipo == 2 & numero > min & numero < max)
error = false;
else if (tipo == 3 & numero >= min & numero < max)
error = false;
else if (tipo == 4 & numero > min & numero <= max)
error = false;
else {
error = true;
System.out.println("Introduce un numero valido.");
teclado.nextLine();
}
} catch (InputMismatchException e) {
System.out.println("Introduce un numero valido.");
error = true;
teclado.nextLine();
}
} while (error);
teclado.close();
return numero;
}
}
Y haciendo pruebas en un Main como:
Código:
package teclado;
public class Main {
public static void main (String args []){
System.out.println(Teclado.numInt(1, 18, 30));
System.out.println(Teclado.numInt(1, 18, 30));
}
}
Me da el siguiente error a la hora de pedirme el segundo dato (no llega a pedirlo):
Código:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at teclado.Teclado.numInt(Teclado.java:364)
at teclado.Main.main(Main.java:6)
Estoy empezando con java y seguramente sea un error la mar de tonto, pero estoy que no sé... Gracias