# Wörter in einem string zählen und die anzahl zurückgeben



## jura818 (12. Feb 2010)

Hallo bereite mich auf die klausur vor und habe folgende aufgabe :Schreiben Sie eine Methode, welche die Anzahl der Worte in einem String zählt. Ein Wort soll
dabei nur aus Buchstaben bestehen

Mein Code :
[Java]public static int zähler(String h){
			int count =0;

			for(int i =0;i<h.length()-1;i++){

				if(Character.isLetter(h.charAt(i))==true){


				}	


				count++; [/Java]



leider gibt die methode nur die anzahl der buchstaben im string zurück 
Könnte jemand helfen ?
Danke im vorraus !!


----------



## SlaterB (12. Feb 2010)

tja du musst du schon ein bisschen Zustand merken, zumindest dem von letzten Buchstaben oder in jedem Schleifendurchlauf zwei Werte abfragen,

durch isLetter() bekommst du quasi eine Kette

true, true, true, false, true, true, true, true, false, true true

jeder zusammenhänge true-Block ist ein Wort, danach suchen oder nur nach Wechseln von true nach false,
aber auch Anfang und Ende des Strings bedenken


----------



## Suinos (12. Feb 2010)

jura818 hat gesagt.:
			
		

> Schreiben Sie eine Methode, welche die Anzahl der Worte in einem String zählt. Ein Wort soll
> dabei nur aus Buchstaben bestehen


Vergiss Java erstmals; wie würdest du rein von der Logik her vorgehen?

---


			
				jura818 hat gesagt.:
			
		

> leider gibt die methode nur die anzahl der buchstaben im string zurück


Nein, aktuell gibt sie die Länge des Textes - 1 zurück.

@edit: viel zu langsam


----------



## jura818 (12. Feb 2010)

Naja logisch wäre es ,jedes wort vor einem leerzeichen zwischenzuspeichern und dann den zähler um eins erhöhen ?


----------



## Gast2 (12. Feb 2010)

Kannst du machen, kannst z.B. auch einfach den String bei Leerzeichen splitten und den Array zählen


```
public static void main(String[] args) {
		System.out.println(zähler("  eins  zwei drei vier  "));
	}

	public static int zähler(String h) {
		return h == null ? 0 : h.trim().split("\\s+").length;
	}
```

Bei allen Lösungen musst du halt gucken wie robust das sein soll, z.B. kann es doppelte Leerzeichen geben? Was ist mit Leerzeichen am ende und am Anfang.


----------

