Huhu,
ich soll für ne Bonuspunkteprojektarbeit in einer Teilaufgabe eine Top-Ten-Liste für mein Spiel erstellen.
Es läuft alles ganz wunderbar, nur seltsamerweise sortiert er meine Einträge nicht mehr so richtig, er fügt neue Einträge einfach unten an, wenn ich erst den Befehl bestenliste.einlesen(); und danach mehrmals bestenliste.einfügen(punkte, name) ausführe
Die Sortierung geschieht in der Methode einfügen, nur seitdem die Methode einlesen dazugekommen ist funktioniert das nicht mehr
Hier mein Quellcode:
Und hier meine Main (mehrmals hintereinander ausgeführt - beim ersten Ausführen ist alles richtig - kommen neue Einträge hinzu, so klatscht er die hinten dran, anstatt sie richtig einzusortieren)
Ich wäre unendlich dankbar wenn da jemand drübergucken würde.
ich soll für ne Bonuspunkteprojektarbeit in einer Teilaufgabe eine Top-Ten-Liste für mein Spiel erstellen.
Es läuft alles ganz wunderbar, nur seltsamerweise sortiert er meine Einträge nicht mehr so richtig, er fügt neue Einträge einfach unten an, wenn ich erst den Befehl bestenliste.einlesen(); und danach mehrmals bestenliste.einfügen(punkte, name) ausführe
Die Sortierung geschieht in der Methode einfügen, nur seitdem die Methode einlesen dazugekommen ist funktioniert das nicht mehr
Hier mein Quellcode:
Java:
import java.util.LinkedList;
import java.io.*;
//checked exceptions
import java.io.IOException;
public class Bestenliste2 {
LinkedList namen = new LinkedList();
LinkedList punkte = new LinkedList();
final static String lineSeparator = System.getProperty("line.separator");
boolean winner;
public Bestenliste2(){
namen.add("Leer");
punkte.add(0);//So ist die LinkedList zu Anfang nicht leer
}
public void einlesen(){
try{
FileReader reader = new FileReader("bestenliste.txt");
StringBuffer einlese=new StringBuffer();
for(int i=reader.read();i!=-1;i=reader.read()){
einlese.append((char)i);
}
int help=0;
int help2=0;
for(int i=help2;i!=-1;i=help2){
help2=einlese.indexOf("Name: ", help);
if(help2!=-1){
help=help2+6;
help2=einlese.indexOf(", Punkte:", help);
namen.add(einlese.substring(help, help2));
help=einlese.indexOf(", Punkte:", help)+10;
help2=einlese.indexOf(lineSeparator, help);
int help3=Integer.parseInt(einlese.substring(help, help2));
punkte.add(help3);
}
}
}
catch(IOException e){
System.out.println("Die Datei bestenliste.txt ist nicht in ihrem Verzeichnis!");
}
}
public void eintragen(int points, String name){
for(int i=0; i<=punkte.size()-1;i++){//Hier werden die Dinger "eigentlich" sortiert
if(points>(int)punkte.get(i)){
punkte.add(i, points);
namen.add(i, name);
if(punkte.size()>10){
punkte.remove(10);
namen.remove(10);
}
break;
}
}
try{
FileWriter schreiber = new FileWriter("Bestenliste.txt");//Hier werden sie reingeschrieben
schreiber.write("Top Ten: ");
schreiber.write(lineSeparator);
for(int i=0;i<=punkte.size()-1;i++){
schreiber.write((i+1) +". Name: " +namen.get(i) + ", Punkte: " + punkte.get(i));
schreiber.write(lineSeparator);
}
schreiber.close();
}
catch(IOException e){
System.out.println("Die Datei bestenliste.txt ist nicht in ihrem Verzeichnis!");
}
}
}
Und hier meine Main (mehrmals hintereinander ausgeführt - beim ersten Ausführen ist alles richtig - kommen neue Einträge hinzu, so klatscht er die hinten dran, anstatt sie richtig einzusortieren)
Java:
public class test {
public static void main(String[] args){
Bestenliste2 laa = new Bestenliste2();
laa.einlesen();
laa.eintragen(75, "e");
laa.eintragen(65, "f");
laa.eintragen(2, "g");
laa.eintragen(68, "h");
laa.eintragen(75, "i");
}
}
Ich wäre unendlich dankbar wenn da jemand drübergucken würde.
Zuletzt bearbeitet: