у меня есть проблема в чтении данных тип int с 'nextInt' и я не знаю о, что может быть. Я оставляю вам метод, который дает мне ошибку; если нет чего-то, или вы хотите полный код, вы можете просить у меня это. Вы могли бы говорить мне, что может быть?
static int numero_DNI;
static ArrayList<Integer> DNI = new ArrayList <Integer>();
static boolean comprobar;
protected ArrayList<Integer> ImportarDNI() {
Scanner sc = new Scanner (System.in);
numero_DNI = sc.nextInt();
DNI.add(numero_DNI);
if (DNI.size() > 7 && DNI.size()<0) {
System.err.println("El DNI debe tener los 7 números");
comprobar = false;
} else {
comprobar = true;
}
sc.close();
return DNI;
}
Ошибки:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Personas.Persona.ImportarDNI(Persona.java:30)
at Personas.Persona.main(Persona.java:64)
Он решен лучше перемещая String вместо int и подтверждая nГєmero символов.
public class LeerNumeros {
int numero_DNI;
ArrayList<String> DNI;
boolean comprobar;
public LeerNumeros() {
DNI = new ArrayList <String>();
comprobar = false;
}
/**
* Se le inserta un dni y comprueba si la cantidad de caracteres es igual a 9.
* @param paramdni es el dni para insertar en arraylist DNI.
* @return
*/
protected ArrayList<String> ImportarDNI(String paramdni) {
char[] caracteresdni = paramdni.toCharArray();
while(comprobar==false) {
if(caracteresdni.length==9) {
comprobar=true;
DNI.add(paramdni);
System.out.println("Dni con nº:"+DNI.toString()+" agregado correctamente");
return DNI;
} else {
comprobar=false;
System.err.println("Un dni consta de 8 numeros y una letra (8 caracteres).");
return DNI;
}
}
return DNI;
}
public static void main(String[]args) {
LeerNumeros l = new LeerNumeros();
l.ImportarDNI("59874568p");
}
}