0

私はほぼ完成したプログラムを持っています。唯一の問題は、ユーザーが「exit」と入力してプログラムを強制終了すると、「exit」という単語が最後にファイル「quotes.txt」に書き込まれることです。プログラムが最初に「exit」をチェックし、「quotes.txt」に書き込まないようにするにはどうすればよいですか?

コードは次のとおりです。

public static void main(String[] args) throws IOException {

    final Formatter fo;
    BufferedWriter bw = null;
    BufferedReader in = new BufferedReader(new FileReader("quotes.txt"));
    String input = "";
    String line;

    File quotesFile = new File("quotes.txt");

    if (quotesFile.exists()) {
        System.out.println(quotesFile.getName() + " exists.");
    } else {
        System.out.println("THIS DOES NOT EXIST.");
    }

    try {
        fo = new Formatter("quotes.txt");
        System.out.println("File created or found.");

    } catch (Exception e) {
        System.out.println("You have an error.");
    }

    do {
        try {
            Scanner kb = new Scanner(System.in);

            if (!input.equalsIgnoreCase("exit")) {

                System.out.println("Enter your text(Type 'exit' to close program.): ");
                bw = new BufferedWriter(new FileWriter(quotesFile, true));
                input = kb.nextLine();
                bw.write(input);
                bw.newLine();
                bw.close();
                System.out.println("Entry added.\n");
            }

        } catch (Exception e) {
            System.out.println("Error.");
        }
    } while (!input.equalsIgnoreCase("exit"));

    System.out.println("Results: ");

    while ((line = in.readLine()) != null) {
        System.out.println(line);
    }

}
}
4

2 に答える 2

1

ファイルに書き込む前に、入力内容を確認してください。

            System.out.println("Enter your text(Type 'exit' to close program.): ");
            bw = new BufferedWriter(new FileWriter(quotesFile, true));
            input = kb.nextLine();
            if(!input.equalsIgnoreCase("exit")) {
                bw.write(input);
                bw.newLine();
                bw.close();
                System.out.println("Entry added.\n");
            }
       }
于 2013-04-01T20:34:47.053 に答える