Ich habe ein Problem im Auslesen einer Datei. Ich benutze den Stream-Tokenizer und eine While-Schleife. Im Groben funktioniert das so, dass jede Iteration der Schleife eine gelesene Zeile repräsentiert. Klappt auch alles wunderbar, aber jetzt kommt mein Problem:
Ich möchte fehlerhafte Zeile behandeln, indem ich eine Fehlermeldung ausgebe und die Zeile nicht einlese.
Also mein Problem ist das folgende: Meine Zeile hat das Format
#,STRING,#,#
Wenn er z.B. an zweiter Stelle (wo der String stehen sollte) feststellt, dass EOL dort steht, soll er die Zeile nicht einlesen, sondern einen Fehler ausgeben (soweit kein Problem). Da aber nach dem Einlesen vom STRING noch weitere nextToken() Befehle stehen, wird er in der nächsten Zeile (die ja durchaus wieder korrekt sein könnte) an der falschen Stelle anfangen zu lesen, da die Token-Position in Relation zum letzten EOL nicht mehr stimmt. Deshalb würde ich gerne die Abarbeitung der weiteren Zeile der While-Schleife unterbinden.
Fällt euch da eine andere Möglichkeit ein, als einen Boolschen Wert zu initialisieren und die Abarbeitung mit sehr vielen IF-Abfragen (ob der Wert noch true ist) zu Verschachteln?
Bitte keine Hinweise der Art: "StreamTokenizer ist deprecated, nimm doch X oder Y", ich programmiere an dem Programm seit einer Woche und möchte nicht von Vorne anfangen ;-)
[/code]
Ich möchte fehlerhafte Zeile behandeln, indem ich eine Fehlermeldung ausgebe und die Zeile nicht einlese.
Code:
while (!EOF){
if (ttype==TT_NUMBER){ //also ist die Zeile von der Art so und so
bla = tok.sval;
nextToken();
if (tok.ttype!=TT_EOL){ // Wenn jetzt schon ein End Of Line vorliegt, besteht ein Eingabefehler, genau den möchte ich behandeln...
blub = tok.sval;}
else {
System.out.println("BLABLA FEHLER");
X(); // für dieses X hätte ich gerne einen Befehl, der an den Anfang der While-Schleife zurückspringt
}
// Hier werden noch weitere Tokens eingelesen, wenn (was Normalfall ist) weitere Token in dieser Zeile stehen
Also mein Problem ist das folgende: Meine Zeile hat das Format
#,STRING,#,#
Wenn er z.B. an zweiter Stelle (wo der String stehen sollte) feststellt, dass EOL dort steht, soll er die Zeile nicht einlesen, sondern einen Fehler ausgeben (soweit kein Problem). Da aber nach dem Einlesen vom STRING noch weitere nextToken() Befehle stehen, wird er in der nächsten Zeile (die ja durchaus wieder korrekt sein könnte) an der falschen Stelle anfangen zu lesen, da die Token-Position in Relation zum letzten EOL nicht mehr stimmt. Deshalb würde ich gerne die Abarbeitung der weiteren Zeile der While-Schleife unterbinden.
Fällt euch da eine andere Möglichkeit ein, als einen Boolschen Wert zu initialisieren und die Abarbeitung mit sehr vielen IF-Abfragen (ob der Wert noch true ist) zu Verschachteln?
Bitte keine Hinweise der Art: "StreamTokenizer ist deprecated, nimm doch X oder Y", ich programmiere an dem Programm seit einer Woche und möchte nicht von Vorne anfangen ;-)
[/code]