# Wörter zählen im String



## Nim (27. Dez 2008)

Hi ich bin java anfänger und habe folgendes Problem.

Ich will aus einem String bestimmte wörter Zählen und deren Anzahl dann ausgeben lassen. Ich habe schon ein wenig rumprobiert und bin jetzt soweit:


```
public int anzahlVorkommen(String wort)
    {
        int x;
        x = 0;
        int gefundeneWoerter;
        gefundeneWoerter = 0;
        
        if (zeichenkette.substring(x , zeichenkette.indexOf(" ", x)).contains(wort) == true)
        {            
           gefundeneWoerter++;
        }
        
        
        while (x  <= zeichenkette.length())
        {        
            
        x = zeichenkette.indexOf(" ", x)+1 ;
        
       
        }
        
        return gefundeneWoerter;        

    }
```

Wie man sieht habe ich das Zählen an sich noch garnicht drin sondern hänge noch am beendigungskriterium der Schleife. Wie man hier erkennen kann ist es eine wunderschöne endlosschleiffe da das nächste leerzeichen am ende des strings die schleife nicht beendet sondern es wieder von vorne beginnt, beim String "a b c d" würde es dann quasi nach index 6 bei index 2 wieder losgehen. 

Ich habe keinerlei Idee wie ich das am besten hinbekommen kann und bin für jede hilfe dankbar =)


----------



## SlaterB (27. Dez 2008)

was soll die while-Schleife eigentlich machen? bisher wird ja gar nicht gefundeneWoerter erhöht oder so,
und wieso vorher noch ein if?

erst Konzept, dann coden,
was indexOf macht, muss man natürlich ausprobieren

> würde es dann quasi nach index 6 bei index 2 wieder losgehen. 

verstehe ich nicht ganz, glaube ich nicht,

wenn ab der angegebenen Startposition kein Vorkommen mehr zu finden ist, wird doch bestimmt -1 zurückgegeben, auf keinen Fall weiter vorne gesucht,
ausprobieren


----------



## help 4 u (27. Dez 2008)

Hi,
wenn du Wörter zählen möchtest, werden diese ja durch ein Leerzeichen getrennt, also würde ich dir den 
	
	
	
	





```
StringTokenizer
```
(Benutzung auch für Anfänger sehr einfach) empfehlen, da du mit 	
	
	
	
	





```
countTokens()
```
 sofort die Anzahl bekommst und sie, falls benötigt, nacheinander mit 
	
	
	
	





```
nextToken()
```
 zurückbekommst.

Mit freundlichen Grüßen,
hoffe ich hab dich nicht falsch verstanden
xiix


----------



## 0x7F800000 (27. Dez 2008)

oder sowas vielleicht?

```
import java.util.regex.*;

...

	public static int countWords(String text, String word){
		int count=0;
		for(Matcher m=Pattern.compile(Pattern.quote(word)).matcher(text); m.find(); count++);
		return count;
	}
```
wo kommt bei deiner methode "zeichenkette" eigentlich her? ???:L


----------

