Hallo alle zusammen. Ich habe eine Hausaufgabe aufbekommen in Java hab mich hier auch schon umgeguckt und gesehen das viele andere aus meinem Kurs Probleme haben ich will jetzt auch nicht ein neue Thread erstellen obwohl hier schon viele existieren aber mir bleibt nichts anderes übrig weil ich sehe das jeder einen anderen Lösungsweg hat. Wie schon mehrmals hier erwähnt hatten wir diese Aufgabe schon in Javascript aber da Javascript alle Variablen auf einen Haufen wirft und mit "var" deklariert muss man beim Anpassen der Aufgabe auf Java vieles ändern. Ich will hier nicht viele verschiedene Codes einfügen und den überblick verlieren sondern ich möchte erstmal den Javascript-Code in Java umwandeln und erst anschließend alles in Klassen packen. Aufgabestellung kurz und knapp:
Text(String) soll nach Alphabet sortiert werden dann sollen die Wörter nach Häufigkeit sortiert werden und die zehn Häufigsten sollen ausgegeben werden.
Eine main-Klasse Aufgabe_8.
Eine Klasse Text mit Attributen und Methoden, die zur Darstellung und Verarbeitung von Texten gehören.
Eine Klasse SelectionSort mit Attributen und Methoden, die für das Selection-Sort-Verfahren verwendet werden.
mein Code:
Ich habe alles umgeschrieben nur ist noch nicht alles richtig. In der Methode normalisiertesWort werden mir noch Fehler ausgegeben ich weiß aber nicht woran das liegt:bahnhof: könnt ihr mir bitte helfen. danke im voraus:toll:
Text(String) soll nach Alphabet sortiert werden dann sollen die Wörter nach Häufigkeit sortiert werden und die zehn Häufigsten sollen ausgegeben werden.
Eine main-Klasse Aufgabe_8.
Eine Klasse Text mit Attributen und Methoden, die zur Darstellung und Verarbeitung von Texten gehören.
Eine Klasse SelectionSort mit Attributen und Methoden, die für das Selection-Sort-Verfahren verwendet werden.
mein Code:
Java:
import java.util.Arrays;
import java.util.*;
public class Aufgabe_8{
public static void main(String[]args){
String einstring = "Herr Bundespräsident, Herr Ministerpräsident, Herr Landtagspräsident, Herr Kardinal, lieber Herr Zehetmair und lieber Freund Theo Waigel! Während ich mir die Reden anhöre, gingen meine Gedanken in vergangene Zeiten zurück, und ich fragte mich: \"Wann warst du zum ersten Mal in München?\" Wenn ich mich recht entsinne, war das Ende März 1945. Ich war damals gerade 15 Jahre alt und ich befand mich als Flaghelfer in Berchtesgaden. Wir fuhren an einem Tag von Berchtesgaden nach München, um etwas dorthin zu transportieren. Ich kannte München noch nicht und meine erste Begegnung mit der Stadt war ein Schock, denn sie war ein einziger Trümmerhaufen. Angesichts dieses Elends sahen weder wir Kinder noch die Erwachsenen eine positive Zukunft. Doch wir haben es geschafft! Diese großartige Generation meiner Eltern, der Großeltern und vielleicht der Urgroßeltern verzweifelte trotz allem nicht. Sie sagten sich: \"Wir wollen es packen!\".";
String[] wortArray = einstring.split(" ");//string in array umwandeln
for(int i=0;i<wortArray.length;i++){//satzzeichen rausfiltern und die woerter mit kleinbuchstaben an das array uebergeben
wortArray[i]=normalisiertesWort(wortArray[i]);
}
System.out.println(i);//anzahl der woerter die im text vorkommen sind in i gespeichert
wortArray.sort();//sortieren nach alphabet
int k=1;
String[] array=new String[wortArray.length];
int p=0;
for(int j=0;j<wortArray.length;j++){//ermitteln wie oft die einzelnen woerter vorkommen
if(wortArray[j]==wortArray[j+1]){
k++;
}
else{//uebergeben der werte an ein 2 dimensionales array
array[p]=new String[2];
array[p][0]=wortArray[j];
array[p][1]=k;
p++;
k=1;
}
}
String tausch1, tausch2;//dreieckstausch damit kein wert verloren geht
boolean unsortiert=true;
while(unsortiert){//bubblesort: falls unsortiert true lautet macht er weiter bis das array komplett sortiert ist
unsortiert=false;//falls er nichts tauscht geht er aus der while schleife raus weil unsortiert=false ist
for(p=0;p<array.length-1;p++){//er geht das array durch bis er was findet und tauscht es dann
if(array[p][1]<array[p+1][1]){
tausch1=array[p+1][1];
tausch2=array[p+1][0];
array[p+1][1]=array[p][1];
array[p+1][0]=array[p][0];
array[p][1]=tausch1;
array[p][0]=tausch2;
unsortiert=true;//falls er was tauscht beginnt das prozedere von vorne um zu ueberpruefen ob alles sortiert ist wenn nicht tauscht er wieder bis unsortiert=false ist
}
}
}
public static String normalisiertesWort(String a) {//woerter aus dem text rausfiltern
char satzZeichen = "\",;:.!?-"; //herauszufilternde Zeichen
char w = "";
a = a.toLowerCase(); // Umwandlung in Kleinbuchstaben
for (int i=0; i < a.length; i++) {
if (satzZeichen.indexOf( a.charAt(i)) == -1) { // kein Satzzeichen
w = w + a.charAt(i); // also in den Wortstring uebernehmen
}
}
return w;
}
}
}
Ich habe alles umgeschrieben nur ist noch nicht alles richtig. In der Methode normalisiertesWort werden mir noch Fehler ausgegeben ich weiß aber nicht woran das liegt:bahnhof: könnt ihr mir bitte helfen. danke im voraus:toll: