Ошибка в чтении данных тип INT с Scanner JAVA

у меня есть проблема в чтении данных тип 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)
1
задан 25.03.2019, 00:01
1 ответ

Он решен лучше перемещая 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");
}

}

0
ответ дан 03.12.2019, 04:04