# Buchstaben zählen



## Andy (3. Mrz 2004)

Hi

Also wär echt super wenn mir jemand hierbei helfen könnte:

Ich hab ein Wort: z.B. bananabread. Jetzt soll ausgegeben werden, welche Buchstaben wie oft  im Wort befinden. Bisher schaffe ich es nur dass folgendes ausgeben wird: 
b : 2
a : 4
n : 2
a : 4
n : 2
a : 4
b : 2
r : 1
e : 1
a : 1
d : 0 !!!!!!

Vielleicht kann mir jetzt jemand sagen warum d = 0 ist und wie ich es schaffe, dass kein Buchstabe doppelt ausgegeben wird! Ich hab den bisherigen Code hinten drangehängt!

Vielen Dank

MFG
Andy


```
public class Test {

	public static void main(String[] args) {

		char[] test = { 'b', 'a', 'n', 'a', 'n', 'a', 'b', 'r', 'e', 'a', 'd' };
		int k = 0;
		int j = 0;
		int l = 0;
		int m = 0;
		int[] Array = new int[12];

		for (int i = 0; i < 110; i++) {

			if (test[l] == test[j]) {
				Array[k] = Array[k] + 1;
			}
		
		j++;
		if (j == 10) {
			j = 0;
			l++;
			k++;
		}
		for (int z = 0; z< 10; z++){
			if (test[l] == test[k]){
				
			}
		}
	}

	System.out.println(" Der Buchstabe " + test[0]);
	System.out.println(" kommt so oft vor: " + Array[0]);
	System.out.println(" Der Buchstabe " + test[1]);
	System.out.println(" kommt so oft vor: " + Array[1]);
	System.out.println(" Der Buchstabe " + test[2]);
	System.out.println(" kommt so oft vor: " + Array[2]);
	System.out.println(" Der Buchstabe " + test[3]);
	System.out.println(" kommt so oft vor: " + Array[3]);
	System.out.println(" Der Buchstabe " + test[4]);
	System.out.println(" kommt so oft vor: " + Array[4]);
	System.out.println(" Der Buchstabe " + test[5]);
	System.out.println(" kommt so oft vor: " + Array[5]);
	System.out.println(" Der Buchstabe " + test[6]);
	System.out.println(" kommt so oft vor: " + Array[6]);
	System.out.println(" Der Buchstabe " + test[7]);
	System.out.println(" kommt so oft vor: " + Array[7]);
	System.out.println(" Der Buchstabe " + test[8]);
	System.out.println(" kommt so oft vor: " + Array[8]);
	System.out.println(" Der Buchstabe " + test[9]);
	System.out.println(" kommt so oft vor: " + Array[9]);
	System.out.println(" Der Buchstabe " + test[10]);
	System.out.println(" kommt so oft vor: " + Array[10]);

}
}
```


----------



## Manfred (3. Mrz 2004)

So hab mich damit herumgespielt, so sollte es passen
Vielleicht gehts auch einfacher... aber es ist auch schon spät ;-)


```
public class Anzahl
{
    public static void zaehlen(String txt)
    {
        // in Grossbuchstaben, damit es keine Unterschiede gibt
        txt = txt.toUpperCase();        
        // Char Array für jeden Buchstaben eines
        char[]  c = new char[txt.length()];
        // int Array Zähler für Anzahl des Buchstabens
        int[] z = new int[txt.length()];
        // boolean wenn doppelte Buchstaben, damit sie nicht x-mal ausgegeben werden
        boolean[] schonAusgegeben = new boolean[txt.length()];
        
        // Den String in das Char-Array kopieren
        txt.getChars(0, txt.length(), c, 0);
        
        
        // Durchschauen und zählen
        for(int i=0; i<txt.length(); i++)
        {
            for(int t=i+1; t<txt.length(); t++)
            {   
                if(c[i] == c[t])
                    z[i]++;
            }
        }
        
        System.out.println("Wort: "+txt);
        
        for(int i=0; i<=txt.length()-1; i++)
        {
            
            // Wenn gleiche Buchstaben im Wort, dann ab dem 2ten das boolean auf true setzen
            for(int t=i+1; t<=txt.length()-1; t++)
            {
                if(c[i] == c[t])
                    schonAusgegeben[t]=true;
            }
                    
            // Wenn das boolean nicht gesetzt, dann ist Buchstabe noch nicht ausgegeben also los...
            if(schonAusgegeben[i] != true)
            {
                System.out.println("Buchstabe " + c[i] + " kommt " + (z[i]+1) +" mal vor");
                schonAusgegeben[i] = true;
            }
         }
    }
}
```


----------



## Guest (4. Mrz 2004)

THX

Funktioniert einwandfrei!!


----------



## bygones (4. Mrz 2004)

wenn du schön mit Objekten arbeiten willst 


```
public class MyTest {
    public static void main(String[]  args) {
        char[] c = args[0].toCharArray();
        Hashtable h = new Hashtable(c.length);

        for(int i = 0; i < c.length; i++) {
            Character ca = new Character(c[i]);
            if(h.containsKey(ca)) {
                int oldV = ((Integer)h.get(ca)).intValue();
                h.put(ca, new Integer(oldV+1));
            }
            else {
                h.put(ca, new Integer(1));
            }
        }

        Iterator it = h.keySet().iterator();
        while(it.hasNext()) {
            Character ch = (Character)it.next();
            System.out.println(ch + " found " + h.get(ch));
        }
    }
}
```


----------



## Manfred (4. Mrz 2004)

Hmm ich dachte mir das es eleganter gehen muss....

Eine Frage ich finde auf der Sun Seite nix über eine Klasse Character??


----------



## Mick (4. Mrz 2004)

http://java.sun.com/j2se/1.4.2/docs/api/

und dann java.lang.Character

Grüße,
Mick


----------

