Ratespiel mit Rangliste

BIAsTeR

Mitglied
Hi,
ich darf über die Semesterferien ein Ratespiel als Frame in Java programmieren. Funktionieren soll es so: man gibt Name und eine Zahl zwischen 1 und 1000 an und drückt ok, das Programm macht ne Randomzahl in dem Bereich und wenn man die Zahl getroffen hat, kommt n Text von wegen gewonnen und ein Eintrag in einer Datei(Anzahl der Versuche,Name,Datum), die aufgerufen werden kann über einen Button und dann in einem Textfeld den besten Spieler ausgibt.

Ich bin so weit, das der Bereich mit den Zahlen und dem Speichern funktioniert. Ich speichere die Anzahl der Versuche, den Namen und das Datum. In der Datei steht dann pro Zeile Anzahl Versuche;Name;Datum

Mein Problem ist das ich die Ausgabe nicht sauber hinbekomme.
Ich hab mir gedacht ich les die Datei in einen array ein und sortier den dann nach der Anzahl der Versuche. und geb dann die erste Position des arrays aus.

Um das zu machen nehm ich die Zeilenanzahl der Datei:
Code:
LineNumberInputStream lsis = new LineNumberInputStream(new FileInputStream("Rangliste.txt"));
while ( ( zeilen = lsis.read())!= -1 );
	{
	 zeilen=lsis.getLineNumber();
 	 tfzahl.setText(""+zeilen+1);
	}

und versuch dann über eine Schleife Zeile für Zeile den Kram einzulesen:
Code:
BufferedReader lesen = new BufferedReader(new FileReader("Rangliste.txt"));
 while ((thisline = lesen.readLine()) != null)
 {
	for (position=0;position<zeilen;position++)
	{
	     rangliste[position] = lesen.readLine();
	}
	tfergebnis.setText(rangliste[0]);
 }
 lesen.close();
 }
catch (Exception exc)
{
	tfergebnis.setText("Error");
}

Was mir im Moment noch fehlt ist das Sortieren...
Aber ich würd es erstmal gerne schaffen das das Programm den array vernünftig zusammenbaut...

Wer kann mir sagen woran es liegt das das Programm nicht so macht wie ich das will?

mfg
ben
 
In der Datei steht dann pro Zeile Anzahl Versuche;Name;Datum
Ich hab mir gedacht ich les die Datei in einen array ein und sortier den dann nach der Anzahl der Versuche. und geb dann die erste Position des arrays aus.

Code:
BufferedReader lesen = new BufferedReader(new FileReader("Rangliste.txt"));
 while ((thisline = lesen.readLine()) != null)
 {
	for (position=0;position<zeilen;position++)
	{
	     rangliste[position] = lesen.readLine();
	}
	tfergebnis.setText(rangliste[0]);
 }
 lesen.close();
 }
catch (Exception exc)
{
	tfergebnis.setText("Error");
}

Was mir im Moment noch fehlt ist das Sortieren...
Aber ich würd es erstmal gerne schaffen das das Programm den array vernünftig zusammenbaut...

Wer kann mir sagen woran es liegt das das Programm nicht so macht wie ich das will?

mfg
ben

Ich würde:
a) nicht in ein Array, sondern in eine List einlesen
b) eine Klasse Entry (o.ä.) anlegen, die die Variablen Versuchszahl, Name, Datum, einen Konstruktor Entry(String alles) und einen Comparator beinhaltet.
c) in dem Konstruktor den eingelesenen String aufsplitten nach Anzahl Versuche, Name, Datum
d) in dem Comparator die Anzahl Versuche vergleichen
e) in die Liste beim Einlesen Objekte vom Typ Entry hinzufügen und danach per Collections.sort sortieren.

Der Code zum Einlesen sähe dann ungefähr so aus:
Code:
 while ((thisline = lesen.readLine()) != null)
 {
   myVector.add(new Entry(thisline));
 }
 Collections.sort(myVector);
 
Zurück