StringTokenizer
-
Hallo,
ich habe ein Programm geschrieben, welches Zahlen aus einer Textdatei liest, sortiert und wieder zurückschreibt. Für das Einlesen benutzte ich die Klasse StringTokenizer. Hier der entsprechende Quellcode:String datei = "99 70 37 33 94 68 25 91 99 19"; // Das Einlesen der Datei in einen String funktioniert noch ohne Probleme StringTokenizer tokenizer = new StringTokenizer(datei); String[] tokens = new String[tokenizer.countTokens()]; for(int n = 0; n < tokenizer.countTokens(); n++) { // tokens[n] = tokenizer.nextToken(); System.out.println(tokenizer.nextToken()); }
Als Ausgabe bekomm ich dann:
99
70
37
33
94Also er bricht den Vorgang nach der Hälfte der Tokens ab. Wenn ich jetzt die Anzahl der Zahlen verdoppele, dann bekomm ich ebenfalls nur die Hälfte der Tokens gelieftert. Weiß jemand Rat, bin echt verzweifelt
-
"countTokens" liefert wohl die Anzahl der "noch vorhandenen" Tokens zurück:
Wenn du einen String mit 10 Tokens hast und dir mit diesem String einen StringTokenizer erstellst, dann liefert dir die countTokens-Methode erstmal eine 10 zurück. Wenn du dir jetzt das erste Token mit "nextToken" geben läßt, dann sind nur noch 9 andere Tokens übrig und countTokens wird dir eine 9 zurückliefern usw.!
In deiner for-Schleife wird also nicht nur das n hochgezählt, sondern auch die Obergrenze jeweils um 1 runtergesetzt.
-
In deiner for-Schleife wird also nicht nur das n hochgezählt, sondern auch die Obergrenze jeweils um 1 runtergesetzt.
Sprich:
for(int i = 0; i < tokens.length; ++i) { }
Würde ich mal so spontan tippen
-
Danke, nät mal etwas genauer die API lesen sollen
-
oder noch einfacher:
while(token.hasMoreTokens()) { //tue dies }
Liebe Grüße
Real