Max4000 Geschrieben 3. August 2009 Teilen Geschrieben 3. August 2009 (bearbeitet) Hallo! Wieso kriege ich gleich "test" ausgegeben? import java.util.NoSuchElementException; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Main { public static void main(String[] args) throws FileNotFoundException { leseDatei(); } private static void leseDatei() throws NoSuchElementException, FileNotFoundException { Scanner scan = new Scanner(new File("personen.src")); String[][] zeilearray = new String[2048][4]; try { while (scan.nextLine() != null) { while (scan.nextLine() != null) { String zeile = scan.nextLine(); String temp[] = zeile.split("\\;"); for (int i = 0; scan.nextLine() != null; i++) { for (int j = 0; j < 4; j++) { zeilearray[i][j] = temp[j]; } } } for (int i = 0; i < 2048; i++){ for (int j = 0; j < 4; j++){ System.out.println(zeilearray[i][j]); } } } } catch (Exception a) { System.out.println("test"); } } } Auszug aus meiner "personen.src" 1;Person1;1.1.1950;Ort1 2;Person2;2.1.1950;Ort2 3;Person3;3.1.1950;Ort3 4;Person4;4.1.1950;Ort4 5;Person5;5.1.1950;Ort5 6;Person6;6.1.1950;Ort6 7;Person7;7.1.1950;Ort7 8;Person8;8.1.1950;Ort8 9;Person9;9.1.1950;Ort9 10;Person10;10.1.1950;Ort10 11;Person11;11.1.1950;Ort11 12;Person12;12.1.1950;Ort12 13;Person13;13.1.1950;Ort13 14;Person14;14.1.1950;Ort14 15;Person15;15.1.1950;Ort15 16;Person16;16.1.1950;Ort16 usw. bis 2048 Bearbeitet 3. August 2009 von Max4000 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 3. August 2009 Teilen Geschrieben 3. August 2009 catch (Exception a) { System.out.println("test"); } Wieso kriege ich gleich "test" ausgegeben? üblicherweise gibt man an dieser stelle die Message von a aus, weil da naturgemäss eine oder mehrere fehlerursachen drinstehen es wäre ja auch sinnlos, eine fehlerbehandlung einzubauen, um sie dann garnicht zu verwenden. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Max4000 Geschrieben 3. August 2009 Autor Teilen Geschrieben 3. August 2009 sorry, meine dummheit... Ich kriege dann java.util.NoSuchElementException: No line found Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 3. August 2009 Teilen Geschrieben 3. August 2009 und in welcher zeile wird die Exception effektiv geworfen? ich verstehe ausserdem nicht, warum du zeilen in ineinander geschachtelten schleifen einliest und nicht in einer einzelnen. while (scan.nextLine() != null) { while (scan.nextLine() != null) { String zeile = scan.nextLine(); damit dürftest du meinem verständnis nach ja schon mal zumindest 2 zeilen ignorieren; die erste sowieso und dann jede zweite. somit sollte es logisch erscheinen, dass du irgendwann über das dateiende hinausliest, was in einer Exception gipfelt. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Max4000 Geschrieben 3. August 2009 Autor Teilen Geschrieben 3. August 2009 ich frage mich so langsam auch, was ich da fabriziert habe. so sieht es jetzt aus: try { while (scan.next() != null) { String zeile = scan.next(); String temp[] = zeile.split("\\;"); for (int i = 0; scan.next() != null; i++) { for (int j = 0; j < 4; j++) { zeilearray[i][j] = temp[j]; } } } for (int i = 0; i < 2048; i++){ for (int j = 0; j < 4; j++){ System.out.println(zeilearray[i][j]); } } } catch (Exception a) { System.out.println(a); } Ich kriege dafür auch eine neue Exception: java.util.NoSuchElementException Will man mir damit sagen, dass er die Datei nicht findet? Denn ein nomales "println" gibt was aus. Vielleicht hab ich ja einen generellen Überlegungsfehler drin? Ich will die Datei auslesen und ein mehrdimensionales Array erzeugen. array[zeile][nr,name,alter,ort] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 4. August 2009 Teilen Geschrieben 4. August 2009 catch (Exception a) { e.printStackTrace(); } Probiers mal damit. Das liefert dir den Fehler inkl. dem Weg der zu dem Fehler geführt hat. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Max4000 Geschrieben 4. August 2009 Autor Teilen Geschrieben 4. August 2009 Hm, ok... Und was sagt mir das jetzt? java.util.NoSuchElementException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at Main.leseDatei(Main.java:39) at Main.main(Main.java:16) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 4. August 2009 Teilen Geschrieben 4. August 2009 while (scan.next() != null) { String zeile = scan.next(); [...] Es gibt keine weitere Zeile. Der Check in deiner While-Schleife stellt stellt nur sicher, dass noch eine Zeile vorhanden ist wenn du die Schleife betrittst. Der nächste scan.next Aufruf hingegen kann durchaus fehlschlagen, wenn keine Zeile mehr vorhanden ist. Wenn du zunächst einmal ins Javadoc von Scanner geguckt hättest wäre dir das auch aufgefallen: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html#next%28%29" data-cite="\"http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html#next%28%29">NoSuchElementException - if no more tokens are available Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 4. August 2009 Teilen Geschrieben 4. August 2009 Die Frage ist eher, warum zwei ineinander geschachtelte While-Schleifen, die das geleiche machen. Er geht für den ersten Datensatz in die While-Schleife und liest dann ab dem zweiten die Datei vollständig. Wenn er hinter dem letzten Datensatz steht, geht er wieder in die äußere Schleife und wirft dann zu recht eine "No Element Exception" Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Max4000 Geschrieben 4. August 2009 Autor Teilen Geschrieben 4. August 2009 Danke, ich habs jetzt gelöst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 4. August 2009 Teilen Geschrieben 4. August 2009 Wäre schön, wenn Du Deine Lösung postest, dann hat vielleicht mal später jemand etwas davon Gruß Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Max4000 Geschrieben 4. August 2009 Autor Teilen Geschrieben 4. August 2009 Na klar: import java.util.NoSuchElementException; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) throws FileNotFoundException { try { leseDatei(); } catch (Exception e){ } } private static void leseDatei() throws NoSuchElementException, FileNotFoundException { Scanner scan = new Scanner(new File("personen.src")); String[][] zeilearray = new String[2048][4]; try { for (int i = 0; scan.hasNextLine(); i++) { String zeile = scan.nextLine(); String temp[] = zeile.split("\\;"); for (int j = 0; j < 4; j++) { zeilearray[i][j] = temp[j]; } } for (int i = 0; i < 2048; i++){ for (int j = 0; j < 4; j++){ System.out.println(zeilearray[i][j]); } } } catch (Exception a) { a.printStackTrace(); } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.