2013-04-02 3 views
-1

Привет, ребята, я новичок в java, и одним из моих требований является создание программы, которая позволит пользователю добавлять запись редактирования удалить запись, такую ​​как сотрудник, адрес, пол, статус, дни работы и скорость в день, что сохраняется в блокноте, добавив, что программа будет вычислять налоги и вклад sss и т. д., которые также будут сохраняться в другом txtfile, а также могут быть просмотрены и отредактированы. моя проблема в том, что я не могу написать вычисления в txtfile и получить «FileNotFoundException». heres мой код в чтении и письме в txt-файлеFileNotFoundException

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

FileNotFound, это именно то, что вы пытаетесь открыть файл, которого там нет. –

+0

help me pls вы можете направить мне по электронной почте @ [email protected] – user2014814

+0

Вы уверены, что ваш файл находится в нужном месте? 'System.getProperty (« user.dir »);' будет сообщать вам текущий каталог вашей программы во время его запуска. – RaptorDotCpp

ответ

1

Приятная вещь об исключениях заключается в том, что трассировка стека (вероятно, это то, что вы видите на вашем выходе в консоль) сообщает вам, какая строка кода выдала исключение. Скорее всего, именно эта линия:

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

Посмотрите на код, который передает файл в ваш метод payrollReadFromFile. Файл, который вы передаете, не тот, где вы думаете. Возможно, имеет смысл передать объект File вместо String, поскольку объект File содержит не только имя файла, но и полный путь к этому файлу.

+0

FileNotFoundException ушел, моя проблема теперь записывается в txt-файл. i can not wirte to – user2014814

+0

Я использовал PrintWriter и FileWriter. мой код: PrintWriter pw = null; \t pw = new PrintWriter (новый FileWriter (имя файла)); – user2014814

+0

Ваш вопрос был отклонен, потому что не совсем ясно, какова была ваша проблема. Попробуйте задать новый вопрос и четко укажите, что такое ваша ошибка и что вы пытались. В одной из комментариев кода нет ничего плохого. Помогите нам понять, что вы пытаетесь сделать и какова ваша ошибка (и, конечно же, разместите соответствующий код), и я или кто-то другой ответят на него. – Thorn

-1

Вы можете бросить исключения, как это:

public static void payrollReadFromFile(String filename) throws FileNotFoundException { 

Кроме того, я предлагаю вам посмотреть вверх попытаться поймать метод.

+1

Как это им помогает? Они уже используют try-catch, и проблема в том, что файл не найден, а не то, что они не знают, что такое FileNotfoundException. – RaptorDotCpp

+0

Это не может помочь ему. !! –

0

Ключом к этому вопросу и ответа является то, что уровень кода и уровень вопроса совершенно разные. Мне кажется, что этот код был написан кем-то с приличным количеством Java-знаний, но человек, спрашивающий (по собственному признанию), является новичком. Таким образом, выбор равен двум:

1) Возьмите одного из нас, чтобы исправить его для вас. Вы можете нанять меня, но я дорогой, есть другие, которые сделают это по дешевке.

2) Изучите Java, если вы учатесь в классе, тогда вы должны это изучать. Сломайте это медленно.

Вот отладки совет:

System.out.println (имя файла);

Таким образом, вы можете увидеть, что имя файла, которое вы ищете.

Это не ответственность со стороны вкладчиков stackoverflow, чтобы исправить ваши проблемы. Мы здесь, чтобы помочь вам учиться.