2015-02-05 124 views
0

我目前有一個程序,允許您添加一個新學生,或保存關於當前學生的新信息。我是BufferedReader/Writer,FileWriter的新手,我只是在這個實驗中使用它。現在,當我添加新學生時,它會將數據添加到新的文本文件中,並刪除當前的學生數組。如果任何人都可以提供幫助,那會很棒。如何保存到當前文本文件/更新到當前文本文件?

try 
    { 
     if((nameBox.getText().equals("")) || (ageBox.getText().equals("")) || (weightBox.getText().equals(""))|| (allBox.getText().equals(""))) 
     { 
      JOptionPane.showMessageDialog(null, "Error: Please input Data!", "Data?", JOptionPane.ERROR_MESSAGE); 
     } 
     else 
     { 
      studentArray[t] = new Student(); 
      studentArray[t].changeName(nameBox.getText()) ; 
      studentArray[t].changeAge(Integer.parseInt(ageBox.getText())); 
      studentArray[t].changeWeight(Double.parseDouble(weightBox.getText())); 
      studentArray[t].changeAllergy(Boolean.parseBoolean(allBox.getText())); 
      count++; 

      System.out.println("" + studentArray[t].getName()); 
      System.out.println("" + studentArray[t].getAge()); 
      System.out.println("" + studentArray[t].getWeight()); 
      System.out.println("" + studentArray[t].getAllergy()); 
      System.out.println(""); 
     } 

     //FileWriter files = new FileWriter(file); 
     //BufferedWriter pies = new BufferedWriter(files); 

     //String data = studentArray[t].getName() + "%" + studentArray[t].getAge()+"%" + studentArray[t].getWeight()+ "%" + studentArray[t].getAllergy(); 
     //pies.write(data); 

     //pies.close(); 

    } 

    catch(Exception z) 
    { 
     JOptionPane.showMessageDialog(null, "Wrong type!", "Type?", JOptionPane.ERROR_MESSAGE);   
    } 

回答

1

您應該使用ArrayList而不是陣列。所以你可以添加一個新的學生:

ArrayList<Student> studentList = new ArrayList(); 

然後,而不是迭代你的數組,只需創建一個新的學生對象。

Student student = new Student(); 
student.changeName(nameBox.getText()) ; 
student.changeAge(Integer.parseInt(ageBox.getText())); 
student.changeWeight(Double.parseDouble(weightBox.getText())); 
student.changeAllergy(Boolean.parseBoolean(allBox.getText())); 

現在你把它添加到您的studentList:

studentList.add(student); 

如果你已經添加了所有你想要的學生,你可以追加的studentList到您的文件。所以在這裏你遍歷你studentList並將它添加到您的文件

FileWriter writer = new FileWriter(file, true); 
    for(Student st: studentList) { 
    String data = st.getName() + "%" + st.getAge()+"%" + st.getWeight()+ "%" + st.getAllergy(); 
    writer.write(data+"\n"); 
} 
writer.close(); 

:爲運營商增加trueFileWriter因爲這樣,它追加投入是很重要的。你看到\n?這是一個換行符,這意味着,一個學生只有一行。

+0

哇,謝謝!我現在就試試。 – tshes 2015-02-05 22:39:35

+0

我寫過,沒有真正能夠測試它(僅限文本編輯器)。如果有不清楚或錯誤的地方,請隨時詢問。 – Christian 2015-02-05 22:40:58

相關問題