大家好我是java的新手,我的一个要求是创建一个程序,使用户能够添加编辑删除视图记录,如员工,地址,性别,状态,工作日和每日费率保存在记事本中,在添加之后,程序将计算税收和sss贡献等,这些也将保存到不同的txtfile,也可以查看和编辑。我的问题是我无法在txtfile上编写计算并获得“FileNotFoundException”。继承了我在txt文件中读写的代码
public static void payrollReadFromFile(String filename) {
// initializes br identifer as BufferedReader.
BufferedReader br = null;
payrolls.clear(); // removes all elements in arraylist employees
try {
// instantiate br as FileReader with filename param
br = new BufferedReader(new FileReader(filename));
try {
String name;
double gincome, nincome, deduc, sss, pagibig, phil = 0; // initialize identifiers
// reads each line through br identifier, and stores it on
// temporary identifiers
// loop continues until null is encountered
while ((name = br.readLine()) != null) {
gincome = Double.parseDouble(br.readLine());
sss = Double.parseDouble(br.readLine());
pagibig = Double.parseDouble(br.readLine());
phil = Double.parseDouble(br.readLine());
deduc = Double.parseDouble(br.readLine());
nincome = Double.parseDouble(br.readLine());
// adds the data to employees arraylist
payrolls.add(new Person( name, gincome, sss, pagibig, phil,deduc, nincome));
}
} finally {
br.close(); // closes BufferedReader
}
} catch (IOException e) {
e.printStackTrace();
}
}
// method which writes data into parameter 'filename'
// uses PrintWriter and FileWriter
public static boolean payrollWriteToFile(String filename) {
boolean saved = false;
PrintWriter pw = null; // pw is a PrintWriter identifier
try {
// instantiate pw as PrintWriter, FileWriter
pw = new PrintWriter(new FileWriter(filename));
try {
// for each loop. each data from employees is written to parameter
// filename
for (Person payroll : payrolls) {
// pw.println(employee.getId());
pw.println(payroll.getName());
pw.println(payroll.getGincome());
pw.println(payroll.getSss());
pw.println(payroll.getPagibig());
pw.println(payroll.getPhil());
pw.println(payroll.getDeduc());
pw.println(payroll.getNincome());
}
saved = true;
} finally {
pw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
return saved;
}
有人能帮帮我吗?我不知道该怎么办。提前谢谢
答案 0 :(得分:1)
关于异常的好处是堆栈跟踪(可能是您在控制台输出中看到的内容)告诉您确切的代码行引发了异常。最有可能就是这条线:
br = new BufferedReader(new FileReader(filename));
查看将文件传递给payrollReadFromFile
方法的代码。您传递的文件不在您认为的位置。传递File对象而不是String更有意义,因为File对象不仅包含文件名,还包含该文件的完整路径。
答案 1 :(得分:0)
这个问题和答案的关键是代码的级别和问题的级别是完全不同的。在我看来,这段代码是由具有相当数量的java知识的人编写的,但是(通过他们自己的承认)询问的人是新手。所以选择是两个:
1)聘请我们其中一人为您解决。你可以雇用我,但我很贵,还有其他人会以便宜的方式来做。
2)学习Java,如果你是学生上课,那么你应该学习这个。分解它慢慢来。
这是一个调试提示:
的System.out.println(文件名);
这样您就可以看到您要查找的文件名是什么。
stackoverflow贡献者的责任不是解决您的问题。我们在这里帮助您学习。
答案 2 :(得分:-1)
您可以抛出异常,例如:
public static void payrollReadFromFile(String filename) throws FileNotFoundException {
另外,我建议你查看try和catch方法。