-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

使用 out.flush() 刷新流,否则使用 autoflush。参见 javadocs

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

于 2013-09-30T15:15:20.473 回答
1

while循环退出需要行结束符。在 Windows 上,这是 Control-Z,对于 *nix 系统,这是 Control-D

另外nextLine搭配hasNextLine

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

...您可能希望将这些close语句移动到一个finally块中以防止该try/catch块内的任何异常

于 2013-09-30T15:17:29.077 回答
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

引用 Reimeus

退出 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 回答