2017-02-16 108 views
0

我正在嘗試開發一個學校項目的程序。不過,我對編碼不是很有經驗,所以很自然地遇到了頻繁的問題。我的項目的整個前提非常簡單,我正在創建一個馬管理系統,這個系統基本上只是一個數據庫的花哨措辭。首先,我添加關於這匹馬的信息,比如它的名字,品種,DOB和其他基本信息。之後,馬的個人資料已經創建。現在,您可以添加諸如培訓計劃,營養信息和過去受傷等信息。今天,當試圖爲營養添加信息時,我遇到了一個問題,它只是輸出一堆隨機文本。 Here's what is written on the text file when I try to write to it。我也有一個部分,你必須從文件中提取數據,從而使其可編輯,但沒有完成這一部分,我什麼都做不了。寫入文本文件時出現故障

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
boolean entryError = false; 
if(FoodName.getText().equals("")) 
{ 
JOptionPane.showMessageDialog(null, "Enter the Horse Food Name.","Error.",JOptionPane.ERROR_MESSAGE); 
entryError = true; 

} 
if(FoodQuantity.getText().equals("")&& entryError==false) 
{ 
JOptionPane.showMessageDialog(null, "Enter the Horse Food     
Quantity.","Error.",JOptionPane.ERROR_MESSAGE); 
entryError = true; 

} 
if(FoodTime.getText().equals("")&& entryError == false) 
{ 
JOptionPane.showMessageDialog(null, "Enter the Horse FoodTimes.","Error.",JOptionPane.ERROR_MESSAGE); 
entryError = true; 

    } 

    if(entryError == false) 
    { 


try { 
    FileWriter tWriter = new FileWriter("HorseNutrition.txt",true); 
    PrintWriter tPrinter = new PrintWriter(tWriter); 

    tPrinter.println(HorseID + "," + FoodName.getText() + "," + FoodQuantity.getText() + "," + FoodTime.getText()); 
    tPrinter.close(); 

    JOptionPane.showMessageDialog(null, "Nutritional data has been saved.","Info",JOptionPane.INFORMATION_MESSAGE); 


} 
catch(Exception error) { 
    System.out.println("Error in saving nutritional data"); 
} 
    } 

任何幫助將不勝感激!

+0

這看起來像是在嘗試打印出未重載'toString()'的對象。檢查你的'println()'語句,並在那裏調用每個變量的'.toString()'看看會發生什麼。 –

+1

這可能是因爲'HorseID'是一個'JTextField',你直接打印到de文件而不是打印它的文本'HorseID.getText()'。而不是'tPrinter.println(HorseID +「,」....);'嘗試'tPrinter.println(HorseID.getText()+「,」...);' – Titus

+0

感謝所有幫助的人。這已修復了主要錯誤,但現在寫入文件後,我意識到,每次寫入文件時,文件都只會覆蓋一匹馬的信息。例如,假設我製作Horse1並輸入他的信息,它會寫入好的文件,但是一旦我寫入另一匹馬的信息,該文件將只寫入我輸入的最後一匹馬的信息。有誰知道這可能是爲什麼?非常感謝! – user7572806

回答

0

HorseID似乎是一個對象(或者確切地說,它看起來像JTextField對象)。按原樣輸出它將啓動它的.toString()方法並輸出關於該特定JTextField對象的一些信息。如果要輸出在該字段中使用的文本,請使用:

HorseID.getText()