簡體   English   中英

Java:如何對txt文件進行排序?

[英]Java: How to sort the txt file?

我再次需要你的幫助。 如何在Java中對txt文件中的記錄進行排序?

這是我如何保存分數的代碼

try {
    File highscore = new File("highscore.txt");
    PrintWriter output = new PrintWriter(new FileWriter(highscore, true));

    if (highscore.exists()) {
        System.out.println();
        System.out.println("High Score:");
    }

    output.println(name + " - " + totalScore);
    output.close();
} catch (IOException e) {
    System.out.println(e);
}

這是我如何顯示分數的代碼

try {
    FileReader fr = new FileReader("highscore.txt");
    BufferedReader br = new BufferedReader(fr);
    String s;

    while ((s = br.readLine()) != null) {
        System.out.println(s);
    }

    br.close();
} catch (IOException e) {
    System.out.println(e);
}

我目前的輸出是:

Player1 100
Player2 200
Player3 50

我想把分數從高到低排序,我該怎么做? 先感謝您!

我想得到的輸出是:

Player2 200
Player1 100
Player3 50

根據@luk2302 和@yshavit,您需要將閱讀循環更改為其他內容:

while ((s = br.readLine()) != null) {
    // 1. Create a custom object from found lines and push them into a list
}
// 2. Sort the list
// 3. Print the list

您可能也想更改保存程序,但沒有被問到,所以我跳過了它。

我建議使用 java 排序功能,在這種情況下,我將創建一個包含名稱和分數的對象Highscore.class

public class Highscore {
    private String name;
    private Integer score;

    public Highscore(String name, Integer score) {
        this.name = name;
        this.score = score;
    }

    // getters...
 }

擁有該對象,您必須創建List<Highscore>並對該對象進行排序...

List<Highscore> highscores = new ArrayList();
//add all highscores e.g. highscores.add(new Highscore(name, totalScore));

highscores.sort(Comparator.comparing(Highscore::getScore));

排序后,您可以將高分放入一個文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM