println只输出一个输入

时间:2016-06-29 12:41:59

标签: java

嗨,我正在处理一个读取输入的字符串,然后在cmd中将它们打印出来 在读出该行之后,我还将其保存到文本文档中,但它输出第一个输入

这是我的代码:

import java.io.*;
public class Stringtest {
    public static void main(String[] args) throws IOException {
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String[] s = new String[10];
        for ( int i = 0; i <= 9; i++ ){
            System.out.println ( "ord" + ( i + 1 ) + "?" );
            s[i]=input.readLine();
        }
        for ( int i = 9; i >= 0; i-- ){
            System.out.println ( s[i] );
            File path = new File("ord.txt");
            PrintWriter a = new PrintWriter (path);
            a.println ( s[i] );
            a.close();
        }
    }
}

谢谢

3 个答案:

答案 0 :(得分:2)

您可以在每次迭代中创建PrintWriter,因此每次都会覆盖该文件 将您的代码更改为:

PrintWriter a = new PrintWriter (path);
for ( int i = 9; i >= 0; i-- ){
    System.out.println ( s[i] );
    File path = new File("ord.txt");
    a.println ( s[i] );
}
a.close();

答案 1 :(得分:0)

将该行放在for(...)

之外
PrintWriter a = new PrintWriter(path)

您正在做的是在每次迭代中重新创建它,因此您可以覆盖其中的内容。

答案 2 :(得分:0)

对于问题的提问者,问题是PrintWriter是为循环的每次迭代创建的,因此在循环文件的每次迭代中都被重写。 您可以按如下方式测试:

 for (int i = 0; i < 10; i++) {
            PrintWriter writer=new PrintWriter("C:/abc.txt");
            writer.print("a"+i);
            writer.close();
        }  

在上面的情况下创建的abc.txt只有a9。