Datei zeilenweise lesen, Rückgabewert = null

hm .... kann das sein, dass wenn ich jedesmal mit br.readLine eine Zeile im *.txt lese?
also auch in der Schleife von while?
weil das würde den Fehler denke ich erklären ...

Es soll ja hier :

Int
String
Double
Double

ausgelesen werden ... so und während der abfrage in der Schleife würde der dann einfach jetzt z.b. int lesen und in der eigentlich vorgesehene IntVariable den String lesen und hinein schreiben ... :/ ... kann man da irgendwie zurück gehen?
 
Zuletzt bearbeitet:
Entweder versteh ich dich nicht oder du verstehst mich nich... nicht bös gemeint ..

das was in Zeile 43 stand wäre gut gewesen, wenn ichs auskommentiert hätte ... das war nur zur Testzwecken ...

ich kann jetzt zwar immer was auslesen das ist jetzt auch kein Problem und neue Mitarbeiter erstelle ich ja mit dem Konstruktor indem ich die Werte aus der Textdatei lese und diese dann übergebe. Nur beim lesen zickt der jetzt immer rum, weil die Datentypen nicht übereinstimmen ...

Ich hab jetzt zwar versucht mit der Bibliothek LineNumberReader die Zeilennummer eins zurück zusetzen( das geht zwar wunderbar), trotzdem fängt der an der gleichen Stelle an weiter zu lesen.

....

hab jetzt einfach ein Absatz mehr in der Textdatei hinzugefügt, weil mir das langsam nervt ... nun klappt das auch ... schade das es so nicht geklappt hat
 
Stell doch einfach nochmal deinen aktuellen Stand hier online, sowie die Datei die du gerne einlesen möchtest (also die ohne die extra eingefügten Absätze).
 
so hier meine Aufgabe...

hab die *.txt Dateien ohne weitere extra Absätze geändert ...
 

Anhänge

  • Aufgabe.zip
    3,8 KB · Aufrufe: 16
Hab mir grad nur mal die beiden .txt dateien angeguckt.
Kann es sein, dass das Problem darin liegt, das die erste Zeile in Arbeiter.txt leer ist?

Wenn du diese Leerzeile löschst, musst du aber natürlich auch die Zeile "System.out.print(br.readLine());
" über der while schleife entfernen (Klasse m.java)
 
Zuletzt bearbeitet:
Entweder du löschst die Leerzeile oder du prüfst die Zeile ob es sich um eine Leerzeile handelt.
Dazu mit string.trim() alle möglichen Whitespaces entfernen und dann mit isEmpty() testen, ob die Zeile etwas enthält.

Ansonsten wäre es vielleicht eleganter solche Daten in einer XML oder JSON Datei zu speichern :)
 
entweder versteht ihr mich nicht oder ich versteh euch nicht ^^

es geht doch eigentlich nur darum, das wenn ich in der while-schleife mit "br.readLine" prüfe obs "leer" ist ...

Die Textdatei (siehe Code) enthält normalerweise keine Leerzeile. Es folgt Absatz pro Absatz mit Werten.

so ... in diese Prüfung wird allerdings schon eine Zeile gelesen, d.h. es rutsch in die nächste Zeile (was ich eigentlich nicht vor hatte) ... um nun die richtigen Daten aus der Textdatei zu lesen hab ich eine Leerzeile hinzugefügt, so dass es in der while-schleife nur auf die Leerzeilen trifft und nicht auf irgendwelche andere Werte.

so meine erste Lösung sollte so aussehen, dass ich die Zeile wieder zurück gehe ohne etwas in der Textdatei zu ändern. Das habe ich mit ReadLineNumbers versucht, da man da ja angeblich die Zeilennummer setzen kann (es hat schon geklappt, aber es hat nicht von dieser Stelle weiter gelesen) ...
meine zweite Löstung sieht jetzt halt so aus, dass ich in der Textdatei einfach eine Leerzeile hinzugefügt habe (ist für mich halt die faulere Version)

Das Problem liegt an br.readLine() .... wie sonst soll ich etwas in einer Textdatei prüfen, ohne jetzt wie bei br.readLine() ein Absatz weiter zu springen und von dort an zu lesen

mit XML bzw. JSON und JAVA hab ich mich nicht auseinander gesetzt ... zumindest jetzt noch nicht ^^ ...
 

Neue Beiträge

Zurück