在下面的我的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;
}
}
答案 0 :(得分:2)
您在for循环后 创建该文件编写器。并且:您只将换行符和最后一个 y 对象写入文件编写器!
所以:在循环之前创建文件编写器,然后在循环过程中将每个员工对象写入相同的文件编写器实例!
奖金提示:使用具有某种含义的名称( y 不会,只会使读者感到困惑)并遵循Java命名约定。
最后:您应该研究术语“范围”的含义。建议:不要全局声明变量,请尝试在最小的有意义范围内声明它们!