Von einem String einzelne Wörter speichern

jhapy

Mitglied
Hallo Leute, ich hab ein simples Problem, aber irgendwie zerbricht es mir den Kopf...
Ich möchte aus einem String jedes einzelne Wort in einem String array speichern
naja... das is soweit mein code:

Java:
public void einzelneWoerter(String wort){
int i=0;
StringTokenizer st = new StringTokenizer(wort);
        while(st.hasMoreTokens()){
           System.err.println(st.nextToken()); //nur als kontrolle um zu sehen welches Wort gespeichert werden soll
           String[]s = new String[i];
           System.out.println(s.length);
           s[i]= st.nextToken();
           i++;
           }
}

nur werd ich direkt rausgeschmissen wegen ArrayIndexOutOfBoundsException: 0
Wenn ich aber das String aus dem While deklariere funktioniert es, aber ich will nicht 2 Schleifen dafür nehmen...
 
Hi,

bin nicht sicher, ob ich alles an deiner Frage richtig verstanden habe, aber wenn du die Tokens in einem String-Array speichern willst, musst du dieses Array außerhalb der Schleife deklarieren. Wenn du es so machst wie in deinem Beispielcode:
Java:
        while(st.hasMoreTokens()){
           // […]
           String[]s = new String[i];
           // […]
        }
wird das Array bei jedem Betreten der Schleife neu erzeugt. Das bringt dir ja nichts.
 
Zuletzt bearbeitet:
Danke zumal für die Antwort, stimmt, war ein aufmerksamkeitsfehler nach vielen herumkopiere x)
Naja, trotzdem haut es mich nach der ersten durchgang...

Wenn z.b das String lautet "Ich bin klug"
Soll dann
s[0] = "Ich"
s[1] = "bin"
s[2] = "klug"

sein...
 
Wieso nicht einfach [c]String[] arr = string.split(" ");[/c] ???:L

edit:
Java:
		String s = "Ich bin klug";
		String[] arr = s.split(" ");
		System.out.println(Arrays.toString(arr));
 
Und warum? Das ist eine legacy class !

Nunja, so z.B.:
Java:
		StringTokenizer st = new StringTokenizer("ich bin klug");
		String[] arr = new String[st.countTokens()];
		for (int i = 0; st.hasMoreTokens(); i++) {
			arr[i] = st.nextToken();
		}
		System.out.println(Arrays.toString(arr));
 
Ah, okay Danke dir! =)
Ja, ich würde eh split verwenden, nur wollte wissen, ob die klasse mit den tokens vielleicht praktischer ist
 

Zurück
Oben