3

だから私はプログラミングの初心者で、問題が何であるかを理解しようとしています.

以下の機能。問題は、scan.hasNext()私が2つ持っている方法にありますprintln

trueまたはfalseを返すかどうかを示すステートメント (スキャンを作成した直後と 2 番目のメソッドに 1 つ) 。奇妙なことはscan.hasNext()

コードはそのまま while ループに入りますが、これは起こるべきことですが、

printlnループに入らないステートメントの1つを削除し、もう1つのステートメントを出力します

ステートメントscan.hasNext()falseであることを示しています。

print ステートメントを消去する以外は何も変更しないため、これは奇妙です。さらに私は

合計 3 つの print ステートメントにもう 1 つ追加すると、再び false になります。

4 番目を追加します。これもまた true です。

「カーソル」があるべき場所をたどる方法がわかりません。

public void createFile(String filename){    
    final File file = new File(filename);       
    try{
        scan = new Scanner(file);
        **System.out.println(scan.hasNext());**
        buff = new BufferedWriter(new FileWriter(filename), 1);         
    }
    catch(Exception e1){
        try{
            buff = new BufferedWriter(new FileWriter(filename));
            scan = new Scanner(file);
        }
        catch(Exception e2){
            System.out.println("Error trying to create file");
        }   
    }
}

public String readFile(){
    String fileContents = "";
    **System.out.println(scan.hasNext());**
    if(scan.hasNext())
        while(scan.hasNext())
            fileContents = fileContents + scan.next()+" "+scan.next()+" "+scan.next();
    return fileContents;

}
4

1 に答える 1

0

さて、私はそれを理解しました。vishal_aim の提案は、私がそれを理解するのに役立ちました。次の行

buff = new BufferedWriter(new FileWriter(filename), 1);

ファイルをゼロサイズに切り詰めていました。その理由は、私が本当にこれをするつもりだったからです。

buff = new BufferedWriter(new FileWriter(filename, true));

最初に、Javaがブール値を要求したときに自動的に1を真にしたと思ったので、1つ入れました。次に、ファイルの末尾に追加できる FileWriter クラスのコンストラクターを使用しようとしていました。ファイル名に true を含めないと、ファイル内のすべてを切り捨てて 0 にする新しいファイルが作成されます。これは、BufferedWriter または FileWriter にブール値を配置する必要があるかどうかを忘れていた疲れた間違いでした。また、BufferedWriter コンストラクターが私に与えなかった理由とエラーが int を受け取るコンストラクターがあり、int がバッファー サイズであるために疑問に思っている場合に備えて。ご協力いただきありがとうございます。

于 2012-12-19T08:21:50.207 に答える