J
Java-Fee
Gast
Hallo,
ich hab einen Ordner mit 3 java-Dateien, und möchte, dass bei Aufruf der main-Klasse auf die entsprechenden Klassen zurückgegriffen wird.
Ich hatte das Programm zuerst als eine Java-Datei geschrieben, dort hat es auch tadellos funktioniert, aber beim splitten auf 3 Dateien bin ich irgendwie völlig durcheinandergekommen.
Ich möchte den Text-String aus der Main-Klasse an die Text-Klasse übergeben, dort wird sie entsprechend abgearbeitet, die dort vormals enthaltene Sortierfunktion möchte ich in einer externen Klasse haben.
Kann mir jemand helfen, wie ich die jew. Methoden am besten anspreche, bzw. welche Attribute ich mit übergeben muss...?
Die printWordFreqStat Methode ist ja quasi der Inhalt der while-Schleife. Wie kann ich die am einfachsten als Methode verpacken, einfach:
?
ich hab einen Ordner mit 3 java-Dateien, und möchte, dass bei Aufruf der main-Klasse auf die entsprechenden Klassen zurückgegriffen wird.
Ich hatte das Programm zuerst als eine Java-Datei geschrieben, dort hat es auch tadellos funktioniert, aber beim splitten auf 3 Dateien bin ich irgendwie völlig durcheinandergekommen.
Ich möchte den Text-String aus der Main-Klasse an die Text-Klasse übergeben, dort wird sie entsprechend abgearbeitet, die dort vormals enthaltene Sortierfunktion möchte ich in einer externen Klasse haben.
Kann mir jemand helfen, wie ich die jew. Methoden am besten anspreche, bzw. welche Attribute ich mit übergeben muss...?
Java:
public class Aufgabe_8 {
public static void main(String [] arg) {
String textString = "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.";
Text txt = new Text( textString ); // übergibt Text an Text-Methode
txt.printWordFreqStat(); //soll die geordnete Liste ausgeben
}
}
Java:
import java.io.*;
class Text {
static void text(textString) {
//Variablendefinitionen
int textlength = 0;
int ch;
boolean last_was_char = false;
String words[];
int index;
String[] word_count;
int temp_zahl;
int pos;
//keine Textauswertung
if (textString.length()==0) {
System.exit(1);
}//if
//in Kleinbuchstaben umwandeln
textString = textString.toLowerCase();
//Wortanzahl ermitteln
for (int i=0; i<textString.length(); i++) {
//Zeichen als ASCII-Code speichern
ch = (int)textString.charAt(i);
//wenn Zeichen Buchstabe ist
if ((ch > 96 && ch < 123)||ch==223||ch== 228||ch==246||ch == 252) {
//--> letztes Zeichen ist Buchstabe
last_was_char = true;
}//if
else if(last_was_char){
//letztes Zeichen kein Buchstabe
last_was_char = false;
//-->Wort zuende
textlength++;
}//else if
else {
last_was_char = false;
}//else
}//for
//Array aus Strings mit der Anzahl der Woerter erstellen
words = new String[textlength];
//variablen initialisieren
words[0] = "";
last_was_char = false;
index = 0;
//Woerter einzeln in String-Array words ablegen
for (int i=0; i<text.length(); i++) {
ch = (int)text.charAt(i);
if ((ch > 96 && ch < 123)||ch==223||ch== 228||ch==246||ch == 252) {
last_was_char = true;
words[index] += text.charAt(i);
}//if
else if(last_was_char){
last_was_char = false;
index++;
if (index < textlength)
words[index] = "";
}//else if
else {
last_was_char = false;
}//else
}//for
//Array alphabetisch sortieren
java.util.Arrays.sort( words );
//Aufruf der Sortierfunktion
SelectionSort.selSort( words );
//
}//text
}//class
Java:
class SelectionSort {
/** static void selSort(String[] str, int[] freq) {
int j;
for (int i = 1; i < freq.length; i++) {
j = maxIndex (freq,i);
swap (freq, i, j);
swap (str, i, j);
}
}
static void swap (int[] a, int i, int j) {
int buffer = a[i];
a[i] = a[j];
a[j] = buffer;
}*/
/**
* Ermitteln der Worthäufigkeit
* Fuer jedes Wort wird die Anzahl angegeben
* In Array Word_count eingetragen als: "ANZAHL"_"WORT"
*/
static void selSort() {
//initialisieren der Variablen
word_count = new String[textlength];
temp_zahl = 1;
pos = 0;
for (int i=0; i<index; i++) {
word_count[i] = "_";
if (words[i].equals(word_count[pos])) {
temp_zahl++;
if (i==index-1) {
word_count[pos] = temp_zahl + "_" +word_count[pos];
}//if
}//if
else {
if (i > 0) {
word_count[pos] = temp_zahl + "_" +word_count[pos];
pos++;
temp_zahl = 1;
}//if
word_count[pos] = words[i];
if (i==index-1) {
word_count[pos] = temp_zahl + "_" +word_count[pos];
}//if
}//else
}//for
//Array Word_count nach der Anzahl sortieren
java.util.Arrays.sort( word_count );
//Variablen initialisieren
int i=pos;
while (true) {
//Array temp ist von der Groesse 2 und enthalt das aktuelle Wort und seine Anzahl
String temp[] = word_count[i].split("_");
//falls weniger als 10 Woerter enthalten sind
if(i==0) {
System.out.println(temp[1] + " " + temp[0] + " " +
(float)((int)(Float.parseFloat(temp[0])*100/textlength*100))/100 +"%" );
break;
}//if
//sonst die ersten Zehn ausgeben
else if ((i <= pos-9)) {
String temp2[] = word_count[pos-9].split("_");
if (Integer.parseInt(temp[0]) < Integer.parseInt(temp2[0]) ) {
break;
}//if
}//else if
System.out.println(temp[1] + " " + temp[0] + " " +
(float)((int)(Float.parseFloat(temp[0])*100/textlength*100))/100 +"%" );
i--;
}//while
//Rückgabe Anzahl Wörter
System.out.println(+textlength);
}
}
Die printWordFreqStat Methode ist ja quasi der Inhalt der while-Schleife. Wie kann ich die am einfachsten als Methode verpacken, einfach:
Java:
static void printWordFreqStat {}