Napisałam grę do której próbuje stworzyć ranking, który wyświetli mi 10 najlepszych wyników uzyskanych przez graczy. Dane te przechowuj w pliku .txt w formacie: int (wynik), String (imię).
Początkowo pomyślałam, że sczytam zawartość pliku do listy i ją posortuję. Wszystko działa ok do momentu, aż wynik nie jest dwucyfrowy. Wtedy sortuje mi po pierwszej cyfrze, czyli liczbę 89 traktuję jako 9.
Nie mam już pomysłu w jaki inny sposób mogłabym to rozwiązać, żeby działało poprawnie. Może w ogóle powinnam zrobić to w inny sposób? Poniżej mój kod:
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class Ranking {
public static void ranking() {
List <String> lista = new ArrayList<String>();
{
String line;
BufferedReader br;
try {
br = new BufferedReader(new FileReader("src/main/resources/ranking.txt"));
while((line = br.readLine()) != null) {
lista.add(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Collections.sort(lista);
Collections.reverse(lista);
String s = "";
int i = 0;
for(String str: lista) {
s += str + "\n";
i++;
if (i == 10) {
break;
}
}
ImageIcon iconRanking = new ImageIcon ("src/main/resources/podium.jpg");
int textRanking = JOptionPane.showOptionDialog(null ,"Top 10: " + "\n" + s, "Ranking", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, iconRanking, null, null);
}
}
}