Hey,
ich bräuchte einige Tipps zur folgenden Teilaufgabe:
In dieser Aufgabe sollen Sie zwei Erweiterungen an dem in der Vorlesung vorgestellten Programm WordHistogramSample.java vornehmen.
a) Erweitern Sie die Klasse WordHistogramSample um eine Methode
static void readText (String filename) {...}
die eine normale Textdatei liest und die in jeder Zeile enthaltenen Worte in das Wort-Histogramm einfügt. Eine geeignete Vorgehensweise, um den Text einer Zeile zu zerlegen, finden Sie auf Folie OPJ-4.7 im Kapitel "Strings".
Testen Sie Ihre neue Methode readText mit den beiden Beispielsdateien:
Bisher habe ich folgendes probiert. Aus Orientierungsgründen habe ich das Bisherige als Kommentar gekennzeichnet.
Schon einmal, danke!
ich bräuchte einige Tipps zur folgenden Teilaufgabe:
In dieser Aufgabe sollen Sie zwei Erweiterungen an dem in der Vorlesung vorgestellten Programm WordHistogramSample.java vornehmen.
a) Erweitern Sie die Klasse WordHistogramSample um eine Methode
static void readText (String filename) {...}
die eine normale Textdatei liest und die in jeder Zeile enthaltenen Worte in das Wort-Histogramm einfügt. Eine geeignete Vorgehensweise, um den Text einer Zeile zu zerlegen, finden Sie auf Folie OPJ-4.7 im Kapitel "Strings".
Testen Sie Ihre neue Methode readText mit den beiden Beispielsdateien:
Bisher habe ich folgendes probiert. Aus Orientierungsgründen habe ich das Bisherige als Kommentar gekennzeichnet.
Schon einmal, danke!
Java:
class WordEntry {
String word;
int frequency;
}
public class WordHistogramSample { //Erweitern Sie die Klasse um eine Methode static void readText (String filename) {...}
static WordEntry[] entries;
static int entryCount;
static void addWord (String word) {
int i = 0;
while (i < entryCount && !word.equals(entries[i].word)) i++;
if (i >= entryCount) {
if (entryCount >= entries.length) Out.println("Zu viele Einträge.");
else {
WordEntry we = new WordEntry();
we.word = word;
we.frequency = 1;
entries[entryCount] = we;
entryCount++;
}
}
else
entries[i].frequency += 1;
}
static void removeWord (String word) {
int i = 0;
while (i < entryCount && !word.equals(entries[i].word)) i++;
if (i < entryCount) {
entries[i].frequency -= 1;
if (entries[i].frequency <= 0) {
entries[i] = entries[entryCount - 1];
entryCount -= 1;
entries[entryCount] = null; // required by class invariant and improves garbage collection
}
}
}
static void printEntries () {
Out.println("Anzahl Einträge: " + entryCount);
for (int i = 0; i < entryCount; i++) {
WordEntry we = entries[i];
Out.println("#" + (i+1) + " " + we.word + ": " + we.frequency);
}
}
static void readWordList (String filename) {
In.open(filename);
if (!In.done()) {
Out.println("Datei nicht gefunden.");
return;
}
String line = In.readLine();
while (In.done()) {
addWord(line);
line = In.readLine();
}
In.close();
}
/*static void readText (String filename) {
In.open (filename);
if (!In.done()) {
Out.println("Datei nicht gefunden.");
return;
}
String text = In.readText();
while (In.done()) {
add(line);
array = In.readL();
}
In.close();*/
/* static void printWords (String text) {
int i = 0, last = text.length() - 1;
while (i <= last) {
while (i <= last && !Character.isLetter(text.charAt(i))) i++;
// end of text or text[i] is a letter
int beg = i;
while (i <= last && Character.isLetter(text.charAt(i))) i++;
// end of text or text[i] is not a letter
if (i > beg) Out.println(text.substring(beg, i));
}
}
*/
}
public static void main (String[] args) {
entries = new WordEntry[1000];
entryCount = 0;
readWordList("words.txt");
printEntries();
}
}