switch-anweisung

toriyama

Grünschnabel
hallo!


ich will die häufigkeit von buchstaben in einen wort zählen und zwar in der richtigen abfolge und keine buchstaben doppelt zählen
hab gedacht, dass es mit der switch-anweisung am besten geht

nun mein prob

for (int i=0; i <wort.length(); i++) {

switch(wort.charAt(i)) {

case ? :b+=1; break;

kann ich den case ebenfalls die methode charAt() zuweisen
habs probiert mit einach nur
case wort.charAt(0) : .......
und
case 'wort.charAt(0)' : .....

oder geht dat gar net?

hat jemand vielleicht einen vorschlag für eine bessere herangehensweise an die thematik

wäre für jede hilfe echt dankbar

gruß toriyama:rolleyes: :confused: :confused: :confused: :confused: :confused: :confused: :confused:
 
Hi, hab mal schnell ein kleines Prog gemacht.
Geht aber erst ab java 1.5

Man kann das aber eh einfach in ein nicht generisches Java ändern.
Falls Du noch Hilfe brauchst frag halt einfach.

Kurze Erklärung:

Ich füge jeden Buchstaben (als String) in eine ArrayList ein. Falls der gerade Einzufügende aber schon drinnen ist, wird er nicht in die Liste aufgenommen.
Damit ist garantiert, dass es bei der Auflistung keine doppelten Buchstaben geben wird. Danach folgt die wie schon gesagt die Auflistung :).

PHP:
import java.util.*;

public class Counter
{
	public static void main(String[] args)
	{
		ArrayList<String> l = new ArrayList<String>();
		String input = "Sebastian";

		input = input.toUpperCase();
		createList(input,l);
		
		list(l);
	}
	public static void createList(String input, ArrayList<String> l)
	{	
		for(int i = 0; i<input.length(); i++)
		{
			addIt(""+input.charAt(i), l);
		}
	}
	public static void addIt(String a, ArrayList<String> l)
	{
		for(int i=0; i<l.size(); i++)
		{
			if( l.get(i).equals(a) )
			{
				return;
			}
		}
		l.add(a);
	}
	public static void list(ArrayList<String> l)
	{
		for(Object a : l)
		{
			System.out.println("Ein "+a+" kommt vor!");
		}
	}
}

Falls Du's testest.. nicht vergessen: Der Befehl ist so "javac -source 1.5 Counter.java"

Noch zu deiner Variante:

case wort.charAt(0) : .......
und
case 'wort.charAt(0)' : .....

oder geht dat gar net?

Das geht nicht, da man bei case immer einen Integer Wert braucht.

mfg nauti
 
Zuletzt bearbeitet:
Hallo!

Wie meinst du das eigentlich genau?

String str = "AABBCCAABBBCA";

Was soll denn da ausgegeben werden?

So vielleicht?

A kommt 2 mal 2 mal vor (AA)
A komm 1 mal 1 mal vor (A)
B kommt 1 mal 2 mal vor (BB)
B kommt 1 mal 3 mal vor (BBB)
C kommt 1 mal 1 mal vor(C)
C kommt 1 mal 2 mal vor (CC)

So etwa?

Gruß Tom
 
in etwa soll es so aussehen:

String str = "AACBBCAABBBCA";


die buchstaben sollen in der im String vorkommenden reihenfolge und nicht doppelt ausgegeben werden.

A=5
C=3
B=5

gruß toriyama
 
Oh, hätte vorher auch fragen sollen, war mir da auch nicht gerade 100% sicher.

Wenn das so ist, dann muss man es bissl umschreiben damit es so läuft wie Du es willst.

Bei Fragen einfach fragen :)

mfg nauti
 
Hallo!

Wollt noch meine Lösung posten:

Code:
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

/*
 * Created on 26.02.2004
 *
 * To change the template for this generated file go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */

/**
 * @author Darimont
 *
 * To change the template for this generated type comment go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
public class CharCnt {

	public static void main(String[] args) {
		String str = "AABBBBAACVVCCDEEEEFFFGZZZZZ";
		char[] cArray = str.toCharArray();
		HashSet set = new HashSet();
		
		for (int i = 0; i < cArray.length; i++) {
			set.add(new Character(cArray[i]));
		}

		List list = null;
		Collections.sort(list = Arrays.asList(set.toArray()));
		Iterator iter = list.iterator();
		while (iter.hasNext()) {
			char c = ((Character) iter.next()).charValue();
			int charCnt = 0;
			for (int i = 0; i < cArray.length; i++) {
				if (c == cArray[i])
					charCnt++;
			}
			System.out.println(
				"Zeichen '" + c + "' kommt im String " + charCnt + " mal vor.");
		}
	}
}
Gruß Tom
 

Neue Beiträge

Zurück