2013-04-03 3 views
-1

ребята хорошего дня, создав программу, которая будет записывать данные в текстовый файл. данные поступают из списка массива, это данные, которые решаются из списка массива, например:не удается записать в файл

public double getGincome(){ 
     gincome=rpd*dwork; 
     return gincome; 
    } 

проблемы я не могу писать в моем текстовом file..here мой код в записи данных:

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 payrolls is 
written to parameter 

       for (Person payroll : payrolls) { 

        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; 
    } 

Heres мой массив

public class Person { 

private String name; 
private String add; 
private String gender; 
private String status; 
    public double rpd; 
    public double dwork; 
    public static int EmployeeCount; 
    public double gincome; 
    public double nincome; 
    public double deduc; 
    public double sss; 
    public double pagibig; 
    public double phil; 



public Person(double gincome, double nincome, double deduc, double sss, double 
pagibig, double phil) { 
    this.gincome = gincome ; 
    this.nincome = nincome; 
    this.deduc = deduc; 
    this.sss = sss; 
      this.pagibig= pagibig; 
      this.phil = phil; 
} 

Person(String name , double gincome, double sss, double pagibig, double phil, 
double deduc, double nincome){ 
    this.gincome = gincome; 
    this.nincome = nincome; 
    this.sss = sss; 
    this.pagibig = pagibig; 
    this.phil = phil; 
    this.deduc = deduc; 

} 

Person(String name, String add, String gender, String status, double dwork, double rpd)  
{ 

      this.name = name; 
    this.add = add; 
    this.gender = gender; 
    this.status = status; 
      this.rpd = rpd; 
      this.dwork = dwork; 

} 



    public double getGincome(){ 
     gincome=rpd*dwork; 
     return gincome; 
    } 

    public double getDeduc(){ 
     double sss = gincome *.03 ; 
     double pagibig = gincome *.02; 
     double philhealth = gincome* .0125 ; 
     deduc= sss + pagibig +philhealth; 

     return deduc; 
    } 


    public double getNincome(){ 
     return nincome; 
    } 

    public double getSss(){ 
     return sss = getGincome() * .03; 


    } 
    public double getPagibig(){ 
     return pagibig = getGincome() * .02; 


    } 
    public double getPhil(){ 
     return phil = getGincome() * .0125; 


    } 
    public static int getEmployeeCount(){ 
    return EmployeeCount; 
    } 

public String getName() { 
    return name; 
} 

public String getAdd() { 
    return add; 
} 

public String getGender() { 
    return gender; 
} 

public String getStatus() { 
    return status; 
} 

    public double getRpd(){ 
      return rpd; 
    } 

    public double getDwork(){ 
      return dwork; 
    } 



public void setName(String name) { 
    this.name = name; 
} 

public void setAdd(String add) { 
    this.add = add; 
} 

public void setGender(String gender) { 
    this.gender = gender; 
} 

public void setStatus(String status) { 
    this.status = status; 

} 

    public void setRpd(double rpd){ 
     this.rpd = rpd; 
    } 

    public void setdWork(double dwork){ 
     this.dwork = dwork; 
    } 




} 

я надеюсь, что вы можете помочь мне, ребята.

+1

Что вы имеете в виду, * не можете писать *? Вы должны быть более конкретными. Вы сталкиваетесь с ошибками? Если так, то кто они? ... В какой строке они происходят? –

+0

Вам необходимо предоставить более подробную информацию. Без дополнительной информации я бы предположил, что это связано с разрешениями на запись в вашей файловой системе. – OlivierLi

+0

Почему ты не можешь написать? Какова ошибка, которая возникает? – jsedano

ответ

0

Попробуйте pw.flush(); до pw.close(); в блоке finally. Это может решить проблему. В противном случае код выглядит корректно для меня.

+0

ничего не меняет, все еще не может записать в мой файл. Я также считаю, что мой код правильный – NewInJava

+1

Вызов 'close()' должен автоматически стирать автора. Это не проблема. – syb0rg

+0

Yay! это @ syb0rg -san, надеюсь, что вы можете мне помочь на этот раз .. – NewInJava

1

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

File file = new File(filename); 
if (!file.exists()) 
{ 
    try 
    { 
     file.createNewFile(); 
    } catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 
try 
{ 
    // Read to end of file for writing 
    BufferedReader read = new BufferedReader(new FileReader(file)); 
    String complete = ""; 
    String line = null; 
    while ((line = read.readLine()) != null) 
    { 
     complete += line + "\n"; 
    } 

    // Write your data 
    BufferedWriter write = new BufferedWriter(new FileWriter(file)); 
    for (Person payroll : payrolls) 
    { 
     write.append(payroll.getName()); 
     write.append(Double.toString(payroll.getGincome())); 
     write.append(Double.toString(payroll.getSss())); 
     write.append(Double.toString(payroll.getPagibig())); 
     write.append(Double.toString(payroll.getPhil())); 
     write.append(Double.toString(payroll.getDeduc())); 
     write.append(Double.toString(payroll.getNincome())); 
    } 
    read.close(); 
    write.close(); 
} catch (Exception e) 
{ 
    e.printStackTrace(); 
} 

Это должно работать, если ваш for цикл, и все ваши методы геттерные правильно используются.

+0

плохо попробуйте это ... – NewInJava

+0

сэр, кроме имени, остальное все двойное – NewInJava

+0

метод append не применим в двойном – NewInJava

Смежные вопросы