2016-01-29 45 views
0

這是我的問題,我有一個我想寫入文本文件的對象的數組列表。在大多數情況下,這種方式有效,但令人生氣的是它只寫入了數組列表的最後一個元素。我的代碼如下:Java編寫器只寫數組列表的最後一個元素

public void write() throws IOException { 
    try { 
     File file = new File("C:\\contacts.txt"); 
     if (!file.exists()) { 
      file.createNewFile(); 
     } 

     FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
     BufferedWriter bw = new BufferedWriter(fw); 
     for(contacts contact:contactList) { 
      StringBuffer contactrec=new StringBuffer(); 
      contactrec.append(contacts.getID()); 
      contactrec.append(","); 
      contactrec.append(contacts.getName()); 
      contactrec.append(","); 
      contactrec.append(contacts.getNotes()); 
      bw.write(contactrec.toString()); 
      bw.newLine(); 
      System.out.println("Contacts have been updated"); 
     } 

     bw.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

如果該ArrayList是說的3大小筆者將3次寫ArrayList中的最後一個元素的文件。因此,如果最後一個元素是: 「12,李四,魚」的文本文件,將有:寫在上面

12,John Doe,fish 
12,John Doe,fish 
12,John Doe,fish 

。我想知道如何解決,爲什麼會發生,提前感謝任何幫助。

我的聯繫人類是這一點,並填充了從csv文件中讀取對象:

public class contacts { 
    private static String ID; 
    private static String Name; 
    private static String Notes; 

    public contacts(String ID, String Name, String Notes){ 
     this.ID = ID; 
     this.Name = Name; 
     this.Notes = Notes; 
    } 

    public static String getID(){ 
     return ID; 
    } 

    public static String getName(){ 
     return Name; 
    } 

    public static String getNotes(){ 
     return Notes; 
    } 

    @Override 
    public String toString(){ 
     return("ID = " + this.getID() + " " + "Name = " + this.getName()+ " " +  "Notes = " + this.getNotes()); 
    } 
} 
+1

'contactList'如何填充?請包括該代碼和「contacts」類的代碼。 – rgettman

+0

你可以檢查'for(contacts contacts:contactList)'這行嗎?不應該在'for'-loop的主體中使用'contact'而不是'contacts'? –

+0

請刪除'contacts'類中的所有靜態修飾符 –

回答

2

您使用靜態方法,所以一切都關係到contacts類而不是對象contact

因此,將數據訪問器方法更改爲非靜態。正確填充對象,然後在for循環中使用contacts而不是使用contact

+1

OP需要將所有成員變量也更改爲非靜態。 –

+0

我現在得到一個索引超出界限的錯誤:1 – PythoniusNoobus

+0

把你的更新代碼。 –

相關問題