-1

大家好,我是 Java 新手,我的要求之一是创建一个程序,使用户能够添加编辑删除视图记录,例如保存在记事本,添加后,程序将计算税收和 sss 贡献等,这些也将保存到不同的 txt 文件中,也可以查看和编辑。我的问题是我无法在 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;
    }

有人能帮我吗?我不知道该怎么办。提前致谢

4

3 回答 3

1

异常的好处是堆栈跟踪(这可能是您在控制台输出中看到的)准确地告诉您哪一行代码引发了异常。很可能是这一行:

br = new BufferedReader(new FileReader(filename)); 

查看将文件传递给您的payrollReadFromFile方法的代码。您传递的文件不是您认为的位置。传递 File 对象而不是 String 可能更有意义,因为 File 对象不仅包含文件名,还包含该文件的完整路径。

于 2013-04-02T10:12:31.203 回答
0

这个问答的关键在于代码的层次,和问题的层次有很大的不同。在我看来,这段代码是由具有相当多的 Java 知识的人编写的,但提出问题的人(他们自己承认)是新手。所以选择有两个:

1) 雇用我们中的一个为您修理它。你可以雇我,但我很贵,还有其他人会以便宜的价格来做。

2)学习Java,如果你是上课的学生,那么你应该学习这个。分解它慢慢来。

这是一个调试提示:

System.out.println(文件名);

这样您就可以看到您要查找的文件名是什么。

解决您的问题不是 stackoverflow 贡献者的责任。我们在这里帮助您学习。

于 2013-04-02T15:25:35.630 回答
-1

您可以抛出异常,如下所示:

public static void payrollReadFromFile(String filename) throws FileNotFoundException {

另外我建议您查看 try and catch 方法。

于 2013-04-02T10:09:29.290 回答