Blackmonkey01 Geschrieben 6. April 2011 Geschrieben 6. April 2011 Ich habe folgendes Problem ich lese hier Zeilen will aber nur 8 "Blöcke" aus dieser Zeile. Darum splitte ich die Zeile entsprechend und erstellen ein String Array mit einer Begrenzung von 8 und füge diese ein. Aber wozu kann ich das Teil auf 8 begrenzen wenn er mir trozdem mehr reinschreibt ? So wirft er mir dann beim einfügen in das mehrdimensionale Array ein Exception weil er größer ist wie 8... Ich muss dazu Sagen das die Zeilen unterschiedlich lang sind. Dachte das er mir bei 8 aufhört mit dem reinschreiben wenn der Array nicht größer ist. Ich weis zwar das ich nur 8 will aber eine Schleife geht schwer da ich sie auf einmal durch .split() einfüge. Kann wer helfen? public static void lesenCopybookFile(){ pfad = Test_JGui.getUrlCopybook(); pfad = pfad.replace("\\","/"); i = 0; copybook = new String[1][8]; row_cache = new String[8]; try { lese = new BufferedReader(new FileReader(pfad)); while((row = lese.readLine()) != null) { row = row.replaceAll("\\s+", ";"); row_cache = row.split(";"); for(int x = 0; x != row_cache.length; x++){ copybook[i][x] = row_cache[x]; } i++; } lese.close(); } catch (IOException e) { e.printStackTrace(); } for ( Object elem : copybook ) System.out.println( elem ); } Zitieren
Thelvan Geschrieben 6. April 2011 Geschrieben 6. April 2011 Du könntest in der for-Schleife noch die Bedingung "< 8" hinzufügen. Dann bekommst du nur die ersten 8 Elemente. Zitieren
mharms Geschrieben 6. April 2011 Geschrieben 6. April 2011 (bearbeitet) Moin, mach doch ein ArrayCopy. Kopiere nur die ersten 8 Elemente. Hier die Infos: Klick! Edit: Würde bei dir so aussehen-> System.arraycopy(row_cache[x], 0, copybook[x] , 0, 8); Bearbeitet 6. April 2011 von mharms Zitieren
etreu Geschrieben 6. April 2011 Geschrieben 6. April 2011 (bearbeitet) String (Java 2 Platform SE 5.0) Split gibts noch mit weiterem Parameter. Bearbeitet 6. April 2011 von etreu Zitieren
mharms Geschrieben 6. April 2011 Geschrieben 6. April 2011 Moin, mach doch ein ArrayCopy. Kopiere nur die ersten 8 Elemente. Hier die Infos: Klick! Edit: Würde bei dir so aussehen-> System.arraycopy(row_cache[x], 0, copybook[x] , 0, 8); Das zieh ich mal zurück, hab's falsch verstanden Zitieren
Sporticus Geschrieben 13. April 2011 Geschrieben 13. April 2011 Hi, ein weiterer Lösungsweg: public static void lesenCopybookFile(){ pfad = Test_JGui.getUrlCopybook(); pfad = pfad.replace("\\","/"); i = 0; copybook = new String[1][8]; row_cache = new String[8]; try { lese = new BufferedReader(new FileReader(pfad)); while((row = lese.readLine()) != null) { row = row.replaceAll("\\s+", ";"); row_cache = row.split(";"); for(int x = 0; x < 8; x++){ // <-- Wenn x kleiner 8 bleibt, dann geht das auch copybook[i][x] = row_cache[x]; } i++; } lese.close(); } catch (IOException e) { e.printStackTrace(); } for ( Object elem : copybook ) System.out.println( elem ); } Zitieren
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.