-3

文字列出力の printWrttier について質問があります。コードは次のとおりです。

     import java.io.File;
     import java.io.FileNotFoundException;
     import java.io.PrintWriter;
     import java.util.Scanner;


    public class Out {

        public static void main(String[] args) {
            try {
                File a=new File("C:/Users/Acer/Desktop/tyty.txt");
                PrintWriter out=new PrintWriter(a);
                Scanner c=new Scanner(System.in);
                while(c.hasNextLine()) {
                    out.printf("%s",c.nextLine());
                }
                c.close();
                out.close();
                System.out.println("input written into file successfully!");
            } catch(FileNotFoundException e) {
                System.out.println("The file not found");
            }
        }
    }

ただし、コンソールにabcdなどのランダムな文字列を入力すると、まったく応答がなく、「入力がファイルに正常に書き込まれました!」と出力されると予想され、入力がテキストファイルに表示されていることがわかります、しかし、コードのどの部分がエラーの原因ですか?

PS ctrl+c はループを強制終了していないため、ここでは機能しません。

4

4 に答える 4

1

whileループを終了するには、行末ターミネータが必要です。Windows では Control-Z、*nix システムでは Control-D です。

さらにnextLinehasNextLine

while(c.hasNextLine()){
    out.printf("%s",c.nextLine());
}

...これらのcloseステートメントをブロックに移動して、ブロックfinally内の例外から保護することができますtry/catch

于 2013-09-30T15:17:29.077 に答える
1

out.flush() を使用してストリームをフラッシュするか、autoflush を使用します。javadoc を参照

http://docs.oracle.com/javase/6/docs/api/java/io/PrintWriter.html#PrintWriter(java.io.OutputStream , boolean)

于 2013-09-30T15:15:20.473 に答える
0

Eclipse の場合は、'Cntrl+Z' を使用します。

を追加した方がよい System.out.println("Please Input the lines that needs to be written in the file \n ");

Whileステートメントの上

于 2013-10-04T06:25:50.143 に答える
0

レイメウスより引用

while ループを終了するには、行末ターミネータが必要です。Windows では Control-C、*nix システムでは Control-D です。

コンソールでの入力が完了したと思われる場合は、次のボタンを押す必要があります。1) Cntrl+C - Windows マシンで実行している場合 2) Cntrl+D - Linux (*nix) マシンで実行している場合

C:\Users\somone\Desktop>java Out
something
is
better
than
nothing
input written into file successfully!

「nothing」と入力した後、「Cntrl + C」を押しました

于 2013-09-30T15:27:21.927 に答える