FileWriter不会写入用户输入时输入的所有字符串

时间:2019-04-15 02:37:47

标签: java

在下面的我的FileWriter中,我正在写一个名为“ employee.txt”的文件。 它写入文件,但最初它只是追加到文件中,而不是每次都换行。从那以后,我通过添加“ \ n”来编辑代码,以使其向下一行。我的问题是,尽管在代码中添加或删除了“ \ n”,它似乎仅接受用户输入的最后一个输入。例如。如果用户要输入2名员工,则仅输入姓氏。参见下面的代码:

 static int addEmployee() throws IOException{
    int x;
    String y = null;
    Scanner emp_input = new Scanner(System.in);
    System.out.println("Enter how many employees you want to add to file:\n ");
    x = emp_input.nextInt();

    for (int i=0; i<x;i++) {
    System.out.println("Add an employee name: ");
    y= emp_input.next();
    }

    try {
    FileWriter fileWriter = new FileWriter("employee.txt", true);
    fileWriter.write("\n");
    fileWriter.write(y);
    fileWriter.close();


    } catch (IOException e) {

        e.printStackTrace();
    }

在写入文件之前更新为打印到屏幕以测试输出:

    static int addEmployee() throws IOException{
        int x;
        String y = null;
        Scanner emp_input = new Scanner(System.in);
        System.out.println("Enter how many employees you want to add to file:\n ");
        x = emp_input.nextInt();


        for (int i=0; i<x;i++) {
          System.out.println("Add an employee name: ");
          y= emp_input.next();
        }

        System.out.println(y);



        return 0;

    }
}

1 个答案:

答案 0 :(得分:2)

您在for循环后 创建该文件编写器。并且:您只将换行符和最后一个 y 对象写入文件编写器!

所以:在循环之前创建文件编写器,然后在循环过程中将每个员工对象写入相同的文件编写器实例!

奖金提示:使用具有某种含义的名称( y 不会,只会使读者感到困惑)并遵循Java命名约定。

最后:您应该研究术语“范围”的含义。建议:不要全局声明变量,请尝试在最小的有意义范围内声明它们!