1

これは単一課題用です。

では、どこから始めればよいでしょうか。

タスク:課題は、外部の .txt ファイルである高等学校のリストを作成することです。.txt ファイルには 5 つの異なるトップ スコアのみを含めることができます。つまり、5 位のハイ スコアラーよりも高いハイ スコアを追加した場合、その 1 つを削除して新しいハイ スコアに置き換える必要があります。

クラス名をクリックすると、コードを含む貼り付けリンクにリダイレクトされます。

問題:現在のテキストを削除せずにコードにテキストを追加することはできません。コードの現在のステートメントは、問題を処理する方法が間違っている可能性がありますが、わかりません。私はいくつかの方法を試しましたが、どれもうまくいかないようでした(または間違っていました)。リストの並べ替えは、最近の割り当てで行ったので問題ありません。

とにかく、おしゃべりは十分にして、仕事に取り掛かりましょう。

私のメイン:

    public class main {

    public static void main(String[] args) {
        menu menu = new menu();
        menu.display();

    }
}

私のメニュー:

import java.util.*;

public class menu {
    highscores highscores = new highscores();
    private Scanner input = new Scanner(System.in);

    public void display() {
        System.out.println("Make your selection!");
        System.out.println("Select an option: \n" + "  1) Insert new score\n"
                + "  2) Print list\n" + "  3) Reset list \n" + "  4) Quit\n ");

        int selection = input.nextInt();
        input.nextLine();

        switch (selection) {
        case 1:
            highscores.enterScore();
            break;
        case 2:
            highscores.printList();
            break;
        case 3:
            highscores.resetList();
            break;
        case 4:
            System.out.println("Exiting program...");
            System.exit(1);
        default:
            System.out.println("Try Again!"); 
            break;

        }

    }

}

私のハイスコアリスト

import java.io.*;
import java.util.*;

public class highscores {

    public void enterScore() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the players name!: ");
        String name = scan.nextLine();
        System.out.println("Enter the players score!: ");
        String score = scan.nextLine();
        System.out.println("Player " + name + " got: " + score
                + " points. Great job!");
        try {
            File file = new File("HighScores.txt");
            PrintWriter writer;
            writer = new PrintWriter(file);
            writer.println("Player name: " +name +" - " +"Player score:" +score);
            writer.close();
        } catch (Exception e) {
            System.out.println("Error #1");
        }
    }


    public void printList() {
        try {
            File file = new File("Highscores.txt");
            Scanner scanner;
            if (file.exists()) {
                scanner = new Scanner(file);
                for (int i = 0; i < 5; ++i) {
                    String line = scanner.nextLine();
                    System.out.println(line);
                }
            } else {
                System.out.println("Error #2");
            }
        } catch (Exception e) {
            System.out.println("Error #1");
        }
    }

    public void resetList() {
        try {
            File file = new File("Highscores.txt");
            PrintWriter writer;
            writer = new PrintWriter(file);
            for (int i = 0; i < 5; ++i) {
                writer.println("Player name: x - Player score: x ");
            }
            writer.close();
        } catch (Exception e) {
            System.out.println("Error #1");
        }

    }
}

このコードを保存して、この割り当てに使用する方法はありますか?

4

1 に答える 1

0

問題:私は一生の間、現在のテキストを削除せずにテキストを追加するコードを取得することはできません。

内で使用FileWriter(File file, boolean append)してラッパーしますPrintWriter(Writer out)

FileWriter(File file, boolean append)のJavaDoc:

Fileオブジェクトを指定してFileWriterオブジェクトを作成します。2番目の引数がtrueの場合、バイトはファイルの先頭ではなく末尾に書き込まれます。

パラメーター:

file-書き込むファイルオブジェクト

追加-trueの場合、バイトはファイルの先頭ではなく末尾に書き込まれます


コードを更新します。

PrintWriter writer;
writer = new PrintWriter(file);

に:

PrintWriter writer;
writer = new PrintWriter(new FileWriter(file, true));
于 2013-02-03T22:29:44.377 に答える