Hi Leute,
arbeite gerade an einem Highscore. Die Daten dafür speichere ich in einer CSV-Datei. Diese sind nach folgendem Schema aufgebaut: LEVEL;NAME;SCORE\n
In meiner Methode lineReplace will ich den größten Eintrag von den 10 in der CSV Datei durch einen neuen, kleineren Wert ersetzen. SortedList gibt mir an Stelle [0][0] die Zeile in der CSV-Datei an welcher sich der Eintrag mit dem größten Wert befindet. Wenn ich nun die Methode ausführe, löscht er die kompletten Einträge in meiner CSV-Datei. Wie kommt das?
Kann man nicht gleichzeitig eine Datei einlesen und an einer bestimmten Zeile etwas ändern??
Need help
Hier meine CSV-Datei:
arbeite gerade an einem Highscore. Die Daten dafür speichere ich in einer CSV-Datei. Diese sind nach folgendem Schema aufgebaut: LEVEL;NAME;SCORE\n
In meiner Methode lineReplace will ich den größten Eintrag von den 10 in der CSV Datei durch einen neuen, kleineren Wert ersetzen. SortedList gibt mir an Stelle [0][0] die Zeile in der CSV-Datei an welcher sich der Eintrag mit dem größten Wert befindet. Wenn ich nun die Methode ausführe, löscht er die kompletten Einträge in meiner CSV-Datei. Wie kommt das?
Kann man nicht gleichzeitig eine Datei einlesen und an einer bestimmten Zeile etwas ändern??
Need help
Java:
public void lineReplace(String myurl, String level, String newName, String newTime, Integer[][] sortedList) {
Integer replaceLine = sortedList[0][0]; // Gibt mir Zeile 7 an -> Bei dem Wert 222357
Integer lineCounter = 0;
Writer f1;
BufferedWriter f2;
try {
f1 = new FileWriter(myurl);
f2 = new BufferedWriter(f1);
BufferedReader in = new BufferedReader(new FileReader(myurl));
String zeile = null;
//Ersetzt folgende replaceLine mit neuer Zeile
while ((zeile = in.readLine()) != null) {
lineCounter++;
if (zeile.equals(replaceLine)){
f2.write(level.toUpperCase() + ";" + newName + ";" + newTime);
} else{
f2.close();
f1.close();
}
}
f2.close();
f1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Java:
public void checkMaxEntry(String url, String level, Integer newScore, String newName) {
ArrayList<Integer> checkMax = searchArrayMax(csvfile);
Integer entryCounter = 0;
Integer lineCounter = 0;
Integer size;
if (level.equals("EASY")) {
size = checkMax.get(0);
} else if (level.equals("MEDIUM")) {
size = checkMax.get(1);
} else if (level.equals("HARD")) {
size = checkMax.get(2);
} else {
size = checkMax.get(3);
}
/*Wenn 10 Leveleintraege getan wurden, wird ueberprueft ob der neue Wert
* besser ist als der schlechteste der Highscoreliste
*/
if (size.equals(10)){
Integer[][] levelEntries = new Integer[size][2];
try {
BufferedReader in = new BufferedReader(new FileReader(url));
String zeile = null;
//Es wird nach allen 10 Eintraegen des jeweiligen Levels gesucht
while ((zeile = in.readLine()) != null) {
// System.out.println("Gelesene Zeile: " + zeile);
lineCounter++;
split = zeile.split(";");
if (split[0].equals(level)) {
levelEntries[entryCounter][0] = lineCounter;
levelEntries[entryCounter][1] = new Integer(split[(2)]);
entryCounter++;
}
}
//
Bubblesort mySortetArray = new Bubblesort();
Integer[][] sortedLevelEntries = mySortetArray.bubbleSort(levelEntries);
//Neuer Eintrag wird an der Stelle des Schlechtesten ueberschrieben
if (sortedLevelEntries[0][1] > newScore){
lineReplace(url, level, newName, newScore.toString(), sortedLevelEntries);
//Ist der Wert schlechter erhaelt man keinen Eintrag in die Highscoreliste
}else{
System.out.println("Sorry zu schlecht!");
}
System.out.println("sortierteListe Eintrag [0][0]"+sortedLevelEntries[0][0]);
} catch (IOException e) {
e.printStackTrace();
}
}else {
writeFile(csvfile, level, newName, newScore.toString());
}
}
Java:
public static void main(String args[]) {
CSVReader r = new CSVReader();
r.checkMaxEntry(r.csvfile, "HARD", new Integer(22), "Slowenien");
}
Hier meine CSV-Datei:
Java:
HARD;Japan;99
HARD;Japan;99
HARD;China;2223
HARD;Polen;23223
HARD;Spanien;1111
HARD;Frankreich;55544
HARD;Madrid;222357
HARD;Oesterreich;9000
HARD;Ungarn;32323
HARD;Romaenien;8877