0

Java の宿題のために、.txt ファイルを読み書きするプログラムを作成する必要があります。.txt ファイルを読み取るメソッドを作成できました。しかし、書き込みメソッドの作成に苦労しています。以下は、私の書き込みメソッドのコードです (ここにある FileOutput クラスに基づいています: http://www.devjavasoft.org/SecondEdition/SourceCode/Share/FileOutput.java )。

メソッドは .txt ファイルを正常に作成し、ユーザー入力を受け入れますが、プロセスを終了してファイルを保存する方法がわかりません。while ループで済むと思っていたのですが、Wh​​ile ループで条件を満たすとループが終了しません。while 条件ロジックに問題があることは確かですが、これが無限ループになる原因はわかりません。

public String chooseFileOutput(){
    Scanner sc = new Scanner (System.in);
    System.out.println("Please enter the file directory for the output of the chosen txt");
    System.out.println("For Example: /Users/UserName/Downloads/FileName.txt");
    ///Users/ReeceAkhtar/Desktop/GeoIPCountryWhois.csv
    final String fileNameOUT = sc.nextLine();
    return fileNameOUT;
    }

public void writeTXT(final String fileNameOUT){
    FileOutput addData = new FileOutput (fileNameOUT);
    String newData = null;

    System.out.println("Enter text. To finish, enter 'EXIT'");

    while(!(newData == "EXIT")){
        Scanner input = new Scanner (System.in);
        addData.writeString(newData = input.nextLine());
        System.out.println("MARKER");
    } 
    addData.close();
}
4

4 に答える 4

1

equals()String 値の比較には、常に メソッドを使用してください。==オブジェクト参照比較用です。while()これが、ループ内の条件が評価されfalseず、プログラムが終了しない理由です。

while(!"EXIT".equals(newData)) {
于 2013-10-25T15:48:46.367 に答える
0

問題は、文字列値の比較に「==」演算子を使用していることです。Strings では、その演算子は両側の 2 つの Strings が同じオブジェクトであるかどうかをテストし、同じ値を持つ異なるオブジェクトである場合は false を返します。equals() メソッド "EXIT".equals(newData) を使用する必要があります。

于 2013-10-25T15:50:19.073 に答える
0

スキャナ入力を取得するための割り当てステートメントがないため、ループが無限であっても不思議ではありません。newDataプログラム期間中は null です。が必要ですnewData = input.nextLine();

もう 1 つ、割り当てステートメントをメソッドに渡すことはできません。実際にコンパイルエラーが発生していないことに驚いています。

于 2013-10-25T15:54:57.683 に答える