2017-04-02 1 views
0

TL; DR-- wie Sie eine java.util.NoSuchElementException erhalten, um eine Null anstelle eines Fehlers zurückzugeben und das Programm zum Absturz zu bringen.So vermeiden Sie eine "java.util.NoSuchElementException", die mein Programm abstürzt

Ich schrieb ein Programm, das eine Reihe von Ints aus einer Textdatei lesen soll. Im Programm wird die Menge an Ints jedes Mal variieren, wenn ich es laufe. Ich habe einen Code geschrieben, der Ints lesen wird und ich möchte wissen, wie die java.util.NoSuchElementException mein Programm nicht abstürzen lässt und stattdessen eine Null zurückgibt.
Der Code, den ich writen habe, ist als

public static void main(String[] args) throws IOException{ 
    Scanner Input = new Scanner(new File("newestcode.txt")); 
    Integer[] digits = new Integer[100]; 
    int h = 0; 
    while(true){ 
     digits[h] = Input.nextInt(); 
     h++; 
     System.out.println(digits[h]); 
    } 
} 

im Fall folgen Sie neugierig sind, bin das Programm, das ich eine Art Entschlüsselungs-Engine für eine schlechte Verschlüsselungs-Engine zu schreiben ich neulich

+1

Haben Sie schon von Try-Catch gehört? –

+0

Bitte folgen Sie den Namenskonventionen für Felder, verwenden Sie camelCase. Weil Ihr Feld 'Input' mit einer statischen Methode wie eine Klasse aussehen könnte. – StarCoder

Antwort

0
try { 
    digits[h] = Input.nextInt(); 
    h++; 
    System.out.println(digits[h]); 
}catch (NoSuchElementException e){ 
    break; 
} 
schrieb
+0

Wenn Sie eine Erklärung benötigen, wie es funktioniert, fragen Sie einfach :) – smolus

0

Wenn Sie nicht sicher sind, wie viele Ints in Ihrer Datei enthalten sind, versuchen Sie nicht, sie in Arrays fester Größe zu speichern. Verwenden Sie stattdessen ArrayList.

Verwenden Sie auch keine Endlosschleife while(true), aber prüfen Sie mit Input.hasNext(), ob noch etwas aus der Datei zu lesen ist.

Und noch eins. Sie versuchen, Wert für Inkrement zu drucken. Dies bedeutet, dass Sie Element an Position 0 hinzufügen, aber versuchen, es von 1 Position zu lesen. Erhöhen Sie das Ende der Schleife.

+0

Minor Tippfehler, es ist 'Input.hasNext()' nicht 'Input.hasNetxt()' – StarCoder

0

Sie sollten die Methode input.hasNext() verwenden, um zu überprüfen, ob die Eingabe mehr 'int' hat, bevor Sie sie verwenden. Um eine beliebige Länge von int-Elementen zu unterstützen, können Sie das Array nicht auf eine feste Länge von 100 setzen. Sie müssen eine ArrayList verwenden, um Elemente dynamisch hinzuzufügen.

Hinweis: Sie müssen Ziffern [h] drucken, bevor Sie die h erhöhen.

Verwandte Themen