Problem beim ausführen von java code

MALON3

Fleet Captain Special
Mitglied seit
16.04.2003
Beiträge
279
Renomée
0
Standort
Offenburg
Hi
Hab hier folgende Aufgabe für Java gestellt:

Für eine Menge von Zeichen soll die Häufigkeit jedes aufgetretenen
Zeichens ermittelt werden
Verwenden Sie als Datenstruktur ein Array von Zeichenzähler-Objekten,
wovon jedes ein Zeichen und dessen Häufigkeit (als Verbund) enthält
Belegen Sie nur soviel Verbunde, wie unterschiedliche Zeichen
vorkommen (hier höchstens 256!)
Hinweis: Jedes Objekt in Ihrem Array muß mit new() erzeugt werden!

Code:
class Charcounter {
	
	char crt;
	int number;
	
	public static void main(String[] args) { //main
		
		Charcounter array[];
		String text;
		char c;
		int i,j,z,pos;
		
		array = new Charcounter[256];
		
		text = "Hello World";
		
		for(i=0; i<text.length(); i++) 	//array mit objekten füllen
			array[i]=new Charcounter();
			
		i=0;
		pos=0;
		while(i<text.length()) {
			c=text.charAt(i);
		
			for(j=0; j<pos && array[j].crt!=c; j++);	//richtig stelle im array suchen
			
			if(c==text.charAt(j)) {	//zeichen existiert
				array[j].number++;	
			}
			else {				    //zeichen neu
				array[j].crt=c;
				array[j].number=1;
				pos++;
			}
			i++;
		}
		
		//ausgabe
		
		for(z=0;z<pos; z++) 
		System.out.println("Das zeichen" + array[z].crt + "ist" + array[z].number + "vorgekommen");
	}
}

Beim übersetzten bekomm ich keine fehler mehr :)

allerdings meckert er jetzt beim ausführen :(

Exception in thread "main" java.lang.NoClassDefFoundError: crtcounter

Hat jemand ne idee an was das liegt...bin in java noch relativ am anfang...

gruß malon3
 
MALON3 schrieb:
aus diesem Posting
Exception in thread "main" java.lang.NoClassDefFoundError: crtcounter

Hab's gerade mal ausprobiert, bei mir läuft's.

javac Charcounter.java
java Charcounter

ergibt:

Das zeicheneist1vorgekommen
Das zeichenlist1vorgekommen
Das zeichen ist0vorgekommen
Das zeichenoist1vorgekommen
Das zeichen ist1vorgekommen
Das zeichenWist1vorgekommen
Das zeichen ist0vorgekommen
Das zeichenrist1vorgekommen
Das zeichen ist0vorgekommen
Das zeichendist1vorgekommen
 
hi

ja jetzt sie ich auch warum es bei mir nicht ging der dateiname war nicht gleich dem klassennamen...

aber die aussgabe stimmt nicht...muss ich wohl den alg. nochmal angucken...

trotzdem danke!

gruß malon3
 
so fehler gefunden :)
Code:
if(c==text.charAt(j)) {	//zeichen existiert
array[j].number++;

Sollte heißen
Code:
if(c==array[j].crt) {	//zeichen existiert
array[j].number++;

gruß
 
Aber schon ziemliche Zeitverschwendung.

Du kannst Dir die for-Schleife sparen und direkt den char-Wert als Index verwenden (vorher test ob <256)

Und um zu schauen, welche Zeichen überhaupt drin sind, kannst Du noch eine verkettete Liste mitführen.

Also:
array der Größe 256 (0 bis 255) was alle Zeichen zählt (entsprechend ascii-Wert)
Liste mit vorgekommenen Zeichen (kann sogar reihenfolge-erhaltend sein)

Damit brauchst Du für einen Text der Länge n nur n Aufrufe und nicht im schlimmsten Fall 255*n Aufrufe (bei großen Texten vor allem wichtig).
 
Zurück
Oben Unten