Buchstaben zählen

izloh

Grünschnabel
Code:
public static void main (String args[])       
   {               
       int anzahl[] = new int[26];
       String eingabe = new String();
       System.out.println("Verarbeitung von Zeichenketten");
       System.out.println("Eingabe:\n");
       eingabe = IO1.einstring();
      char wfeld[] = eingabe.toCharArray();
       for (int i=0;i < wfeld.length;i++)
       {
          if (wfeld[i] > 64 && wfeld[i] < 91)
             wfeld[i]+= 32; 
          else if (wfeld[i] > 96 && wfeld[i] < 123)
             wfeld[i]=wfeld[i];
          else if (wfeld[i] == ' ')
           wfeld[i]=wfeld[i];
          else
             wfeld[i]='9';
          for (i = 0; i < wfeld.length; i++)
        anzahl[(wfeld[i]-97)]++;
          for (i = 0; i < 26; i++) 
             System.out.println((char) (i+97) + ": " + anzahl[i] + "\t"+stern(anzahl[i]));
       }
       String ausgabe = new String(wfeld);
       System.out.println("Ihre Eingabe lautete: '"+ eingabe +"'\n");
       System.out.println("Die neue Ausgabe lautet nun: '" + ausgabe + "'!");
   }
   static String stern(int anzahl) 
   {
       String s = "";
       for (int i=0;i<anzahl;i++) s+="*";
       return s;
   }


Hi,

der Code macht aus großen Buchstaben kleine! Jedoch will ich jetzt zählen aber wenn ich "haLLo" eingebe dann gibt er mir eine Fehlermeldung in den Zeilen!
Code:

Code:
for (i = 0; i < wfeld.length; i++)
        anzahl[(wfeld[i]-97)]++;
          for (i = 0; i < 26; i++) 
             System.out.println((char) (i+97) + ": " + anzahl[i] + "\t"+stern(anzahl[i]));
 
moin!
Du weist aber schon, dass dass die String Klasse eine Methode toUpperCase() besitzt, die dir Klein- in GroßBuchstaben umwandelt?

Was willst du denn zählen? Aus dem Code werd ich nicht so richtig schlau.. und die Frage ist auch nicht sehr präzise.. und wo genau die Fehlermeldung auftritt ist auch nicht klar.

Edit:
Wenn du die Anzahl der verschiedenen Zeichen zählen willst, könntest du das zum Beispiel so machen:
Code:
    HashMap<String,Integer> counting = new HashMap<String,Integer>();
    String s = "TRASDSFHRDGHÖ";
    for(int i=0; i< s.length(); i++){
	char t = s.charAt(i);
	if(counting.containsKey(""+t)){
		int count = counting.get(""+t)+1;
		counting.put(""+t, count);
	}
	else
                counting.put(""+t, 1);
	}
	Iterator<String> iter = counting.keySet().iterator();
	while(iter.hasNext()){
		String key = iter.next();
		System.out.println("anzahl der " +key+"'s : "+counting.get(key));
	}
*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

Die Buchstaben eines Strings könnte man auch so zählen lassen (wenn man sich gut mit dem Collections API auskennt ;-):
Java:
/**
 * 
 */
package de.tutorials;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.TreeSet;

/**
 * @author Tom
 * 
 */
public class LetterCount {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String[] letters = "http://wWW.TuTORIals.De".toLowerCase().split("");
		List<String> letterList = Arrays.asList(Arrays.copyOfRange(letters, 1,
				letters.length));
		for (String letter : new TreeSet<String>(letterList)) {
			System.out.println(letter + ": "
					+ Collections.frequency(letterList, letter));
		}
	}
}

Ausgabe:
Code:
.: 2
/: 2
:: 1
a: 1
d: 1
e: 1
h: 1
i: 1
l: 1
o: 1
p: 1
r: 1
s: 1
t: 4
u: 1
w: 3

Gruß Tom
 
ich würde gerne halt nur wissen wo mein Problem liegt das zu zählen! Haben die Befehle asList noch nicht usw. daher würde ich das gerne mittels Schleifen und arrays bewerkstelligen! TolowerCase ist mir bekannt jedoch will ich das ebenfalls mittels Schleife programmieren .. wo liegt denn bei mir das Problem dass der einen Fehler ausgibt

Code:
anzahl[(wfeld[i]-97)]++;
 
Zurück