0

これは私が取り組んでいるトレーニングアプリです。アイデアは、アカウント (テキスト ファイル) を作成し、入力したデータをその中に保存することです。これが私がこれまでに持っているものです。

public static void main(String[] args) {

    boolean start = true;

    while (start == true) {

        CreateNewMember();
        start = DecideToAddOrQuit();
    }
}


public static void CreateNewMember() {

    Scanner keyboard = new Scanner(System.in);
    out.println("Enter a username: ");
    String input = keyboard.nextLine();
    createMember member = new createMember(input);
    member.setMembership();
    member.setInfo();
}

public static boolean DecideToAddOrQuit() {
    Scanner keyboard = new Scanner(System.in);
    out.println("\nPress 1 if you want to continue adding data.");
    out.println("Press any other key if you want to leave.");

    String decision = keyboard.nextLine();
    if (decision.equals("1")) {
        out.println("");
        return true;
    } else {
        out.println("Goodbye!");
        return false;
    }
}

ファイルにデータを追加するクラスは次のとおりです。

public class createMember {

public String name;
private String fullName;
private String age;
private String experience;

private Formatter x;

public createMember(String name) {
    this.name = name;
}

public void setMembership() {
    try {           
        x = new Formatter(name);   
        out.println("File with name \"" + name + "\" has been created!");
    } catch (Exception e) {
        out.println("Could not create username.");
    }
}

public void setInfo () {
    Scanner keyboard = new Scanner(System.in);
    String fullNameIn, ageIn, experienceIn;

    out.println("Enter your Full Name");
    fullNameIn = keyboard.nextLine();
    fullName = fullNameIn;
    out.println("Enter your Age");
    ageIn = keyboard.nextLine();
    age = ageIn;
    out.println("Enter your lifting experience\n");
    experienceIn = keyboard.nextLine();
    experience = experienceIn;
    x.format("%s\t%s\t%s", fullName, age, experience );
 }

}

入力した値 (フルネーム、年齢、経験) はユーザー名ファイルに保存されません。これを修正するにはどうすればよいですか? また、なぜ発生するのですか?

4

2 に答える 2

3

プログラムの実行中に出力が書き込まれることを期待している場合は、出力がFormatter バッファリングされるため、出力が表示されないことがあります。

close()残りのバッファリングされたデータが書き込まれるように、作業が完了したらファイルを作成する必要がありますx.close()(これは、プログラムの終了時でも自動的には行われません)。また、出力を実際にすぐにflush()書き込みたい場合は、行を書き込むとすぐに ( x.flush())。

于 2013-11-05T21:30:29.220 に答える