Barny
28.06.2012, 15:33
Hiho!
Ich habe vor kurzem einen Wordlistgenerator geschrieben und bin auf das Problem gestoßen, dass doch viele Wörter doppelt oder dreifach in der Liste vorhanden sind, was ja nicht unbedingt sein muss.
Zur Lösung des Problems habe ich etwas gecodet, was mir diese Liste einmal komplett durchsortiert, und da wir in Informatik vor kurzem den Stapelspeicher oder auch Kellerspeicher durchgenommen haben, wollte ich diesen direkt einmal sinnvoll einsetzen.
Hat auch gut geklappt, nur jetzt erhalte ich einen Fehler der eher mit meinem Array zusammenhängt ( ArrayIndexOutOfBoundsException ), welchen ich mir aber nicht erklären kann oder einfach nur blind bin.^^
Vielleicht sieht ja einer von euch den Fehler und kann mir ein wenig auf die Sprünge helfen.^^
Hier ist der Quellcode:
import java.io.BufferedReader;
import java.io.FileReader;
public class main {
public static void main(String[] args) throws InterruptedException{
int i=0,j=0;
String[]array= new String[5001];
verweiskeller v = new verweiskeller();
try {
BufferedReader in = new BufferedReader(new FileReader("/home/Barny/Desktop/wordlist.txt"));
String zeile = null;
//Einlesen der Wörter
while ((zeile = in.readLine()) != null) {
v.push(zeile);
System.out.println("Wort "+(i+1)+" gelesen!");
i++;
}
System.out.println("Alle Wörter wurden eingelesen und sind bereit zum Sortieren...");
Thread.sleep(2000);
System.out.println("Beginne Sortieren...");
Thread.sleep(1500);
//Sortieren
do{
int k=0;
int duplikat=0;
while((k<=array.length-1)) {
if(v.top().equals(array[k])){
duplikat++;
}
k++;
}
if(duplikat>0) {
v.pop();
duplikat=0;
} else {
array[k]= (String) v.top();
k=0;
v.pop();
}
}while(!v.empty());
}catch(Exception e) {
System.err.println("Ein Fehler ist aufgetreten");
}
}
}
Zum Verständnis meiner Kellerspeichers:
Ich arbeite mir dem "First in last out"-Prinzip.
pop() = Oberstes Element löschen
top() = Oberstes Element abrufen
push() = Element hinzufügen
empty() = boolsche Abfrage ob noch was auf dem Stack liegt
Ich bedanke mich schonmal im Vorraus für die Hilfe und ich hoffe mein Fehler ist nicht ganz so daneben. Ist heute echt warm und kann mich kaum konzentrieren, würde das aber trotzdem heute gerne fertig kriegen. :D
mfg
Barny
Ich habe vor kurzem einen Wordlistgenerator geschrieben und bin auf das Problem gestoßen, dass doch viele Wörter doppelt oder dreifach in der Liste vorhanden sind, was ja nicht unbedingt sein muss.
Zur Lösung des Problems habe ich etwas gecodet, was mir diese Liste einmal komplett durchsortiert, und da wir in Informatik vor kurzem den Stapelspeicher oder auch Kellerspeicher durchgenommen haben, wollte ich diesen direkt einmal sinnvoll einsetzen.
Hat auch gut geklappt, nur jetzt erhalte ich einen Fehler der eher mit meinem Array zusammenhängt ( ArrayIndexOutOfBoundsException ), welchen ich mir aber nicht erklären kann oder einfach nur blind bin.^^
Vielleicht sieht ja einer von euch den Fehler und kann mir ein wenig auf die Sprünge helfen.^^
Hier ist der Quellcode:
import java.io.BufferedReader;
import java.io.FileReader;
public class main {
public static void main(String[] args) throws InterruptedException{
int i=0,j=0;
String[]array= new String[5001];
verweiskeller v = new verweiskeller();
try {
BufferedReader in = new BufferedReader(new FileReader("/home/Barny/Desktop/wordlist.txt"));
String zeile = null;
//Einlesen der Wörter
while ((zeile = in.readLine()) != null) {
v.push(zeile);
System.out.println("Wort "+(i+1)+" gelesen!");
i++;
}
System.out.println("Alle Wörter wurden eingelesen und sind bereit zum Sortieren...");
Thread.sleep(2000);
System.out.println("Beginne Sortieren...");
Thread.sleep(1500);
//Sortieren
do{
int k=0;
int duplikat=0;
while((k<=array.length-1)) {
if(v.top().equals(array[k])){
duplikat++;
}
k++;
}
if(duplikat>0) {
v.pop();
duplikat=0;
} else {
array[k]= (String) v.top();
k=0;
v.pop();
}
}while(!v.empty());
}catch(Exception e) {
System.err.println("Ein Fehler ist aufgetreten");
}
}
}
Zum Verständnis meiner Kellerspeichers:
Ich arbeite mir dem "First in last out"-Prinzip.
pop() = Oberstes Element löschen
top() = Oberstes Element abrufen
push() = Element hinzufügen
empty() = boolsche Abfrage ob noch was auf dem Stack liegt
Ich bedanke mich schonmal im Vorraus für die Hilfe und ich hoffe mein Fehler ist nicht ganz so daneben. Ist heute echt warm und kann mich kaum konzentrieren, würde das aber trotzdem heute gerne fertig kriegen. :D
mfg
Barny