Frage von snipesss, 29

[JAVA] NoSuchElementException?

@SuppressWarnings("serial")
public class TeamFrame extends JFrame{

public TeamFrame() throws IOException{
    Player player1;
    Scanner hankeesData = new Scanner(new File("Hankees.txt"));
    
    try{
        for(int num = 1; num <= 9; num++){
            player1 = new Player(hankeesData.nextLine(),
                                hankeesData.nextDouble());
            hankeesData.nextLine();
            
            addPlayerInfo(player1);
    }
    }
    
    catch(Exception e){
        System.err.println("Die angegebene Datei wurde nicht gefunden!");
    }
    
    
    setTitle("Die Hankees");
    setLayout(new GridLayout(9, 2, 20, 3));
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pack();
    setVisible(true);
    
    hankeesData.close();
    
    
}

void addPlayerInfo(Player player1){
    add(new JLabel("  " + player1.getName()));
    add(new JLabel("  " + player1.getAverageString()));
}

}

Fehlermeldung: java.util.NoSuchElementException: No line found

Was mach ich falsch??

Antwort
von Jonas711, 13

Im Normalfall tritt dieser Fehler auf, wenn du eine Datei falsch ausliest, also wenn zum Beispiel die Textdatei nur 3 Zeilen hat, du aber 9 auslesen möchtest.

Allerdings dürfte dieser Fehler in deinem Fall eigentlich nicht auftauchen, da du Fehler beim Einlesen ja mit dem catch-Block abfängst (wenn auch etwas undifferenziert).

Vielleicht übersehe ich aber auch gerade etwas.

Ich kann mich also nur anschließen: Ein gesamter Stacktrace (also die nach der Fehlermeldung folgenden Zeilen "at...", die u.a die Zeilennummer beinhalten, wo der Fehler aufgetreten ist) wäre hilfreich. Eventuell auch der Inhalt der Textdatei.

Antwort
von Hendrik2708, 18

Der genaue StackTrace würde helfen..

Expertenantwort
von KnusperPudding, Community-Experte für Java, 16

Du frägst den Namen via:

hankeesData.nextLine()

ab. 

Das setzt natürlich voraus, dass nach jeder Zeile ein Zeilenumbruch statt findet.

Also sagt die Meldung aus, dass das Element: der Zeilenumbruch nicht vorhanden ist.

Mehr kann man dir nur sagen wenn der Inhalt der Datei bekannt wäre.

Kommentar von snipesss ,

Spieler1
,500
Spieler2 
,400
Spieler3 
,900
Spieler4 
,760

Kommentar von KnusperPudding ,

Und da ist das Problem:

for(int num = 1; num <= 9; num++){

Du durchläufst die 9x die Datei, hast aber nur 4 Spieler.

Kommentar von snipesss ,

Achso. Danke !!

Keine passende Antwort gefunden?

Fragen Sie die Community