Erste Schritte einzelne Wörter aus textdatei lesen...

Terry12

Aktives Mitglied
hoi ,
ich habe einen Arithmetischen ausdruck, in einer Textdatei in einer Zeile stehen, und den lese ich ein ins Programm z.B.

zeile = "aa + bb + cc"

ich habe versucht die einzelnen Wörter in der Zeile zu trennen und an eine Methode zu übergeben, funktioniert auch wie es soll , allerdings am ende wenn kein Leerzeichen mehr kommt wirft er eine Fehlermeldung aus , habe diese Methode :

public void arithmAusdruck(String line)
{
String wert;
int pos;
while (line!= null)
{
line = line.trim();
pos = line.indexOf(" ");
wert = line.substring(0,pos);
exprTree.insertQueue(wert);
line = line.substring(line.indexOf(" "));
}

}

am Ende steht dann nur noch "cc" und es folgt kein Leerzeichen mehr, also ist pos = -1 und bei wert = line.substring(0,pos); wirft er dann eine IndexOutOfBoundsException...
wie kann man das anders lösen sodass er am Ende nur noch den Wert einliest und falls kein leerzeichen mehr kommt dieses ignoriert?
 
Ich würde das ganze einfach nach Leerzeichen splitten:

Java:
String zeile = "aa + bb + cc";
String[] teile = zeile.split(" +");

EDIT:
Das Plus hat nichts mit dem Plus in deinem String zu tun, das ist nen Regex quantifier.
 
supi thx so hats funktioniert! kannst du mir vielleicht noch sagen wo man mehr über diese regex für Java erfahren kann? Finde ich echt nützlich sowas....
 
thx, noch eine Frage, beim Deklarationsblock, kommt nach dem Deklarationsblock eine "Leerzeile"
ich machs im moment mit
Java:
while((line = reader.readLine())!= null ) ...

aber sobald er eine leerzeile trifft stoppt er und geht komplett aus der methode raus, wie kann ich das verhindern damit er weitermacht und wie komme ich dann in den nächsten block?
Meinen die mit "Leerzeile" eigentlich ein "Space" also leerzeichen oder ein carriage-return ?

also meine Eingabedatei schaut dann folgendermaßen aus:
Java:
Beispiel einer Eingabedatei:
Deklarationsblock
aa
bB
CC
Leerzeile { Leerzeile
Arithmetischer Ausdruck ( eine Zeile ! ) { aa + bB + CC
Leerzeile { Leerzeile
Wertzuweisungsblock
aa = 1
bB = 2
CC = 3
 

Zurück
Oben