# Von einem String einzelne Wörter speichern



## jhapy (28. Nov 2010)

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:


```
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...


----------



## Haave (28. Nov 2010)

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:

```
while(st.hasMoreTokens()){
           // […]
           String[]s = new String[i];
           // […]
        }
```
wird das Array bei jedem Betreten der Schleife neu erzeugt. Das bringt dir ja nichts.


----------



## jhapy (28. Nov 2010)

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...


----------



## eRaaaa (28. Nov 2010)

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

edit: 
	
	
	
	





```
String s = "Ich bin klug";
		String[] arr = s.split(" ");
		System.out.println(Arrays.toString(arr));
```


----------



## jhapy (28. Nov 2010)

eRaaaa hat gesagt.:


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



Ja mit dem split weiß ich das eh, aber wollte wissen wie das mit den tokenizer funktioniert... =)


----------



## eRaaaa (28. Nov 2010)

Und warum? Das ist eine legacy class !

Nunja, so z.B.:

```
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));
```


----------



## jhapy (28. Nov 2010)

Ah, okay Danke dir! =)
Ja, ich würde eh split verwenden, nur wollte wissen, ob die klasse mit den tokens vielleicht praktischer ist


----------

