2011-12-27 32 views
0

上時,Java ArrayList值被重置所以每次運行方法測試時,我的String數組都會被添加到我的ArrayList中,並且會打印出lyricLineInfo [4]值,但是當方法測試再次運行該數組將被添加到ArrayList,但它也將用新數組替換所有其他ArrayList值。因此,當再次打印lyricLineInfo [4]時,它會打印出新值,而不是原來的值。我不確定爲什麼這樣做可以幫助任何人?這裏是我的代碼:當新的值被添加到

private String[] lyricLineInfo = new String[5]; 
private ArrayList<String[]> lyricLineNumber = new ArrayList<String[]>(); 

public void test() { 
    lyricLineNumber.add(getInfo()); 
    System.out.println(lyricLineNumber.get(0)[4]) 
} 

public String[] getInfo() { 
    if (chckbxLeadSinger.isSelected()) { 
     lyricLineInfo[0] = "true"; 
    } else { 
     lyricLineInfo[0] = "false"; 
    } 
    if (chckbxBackupSinger.isSelected()) { 
     lyricLineInfo[1] = "true"; 
    } else { 
     lyricLineInfo[1] = "false"; 
    } 
    lyricLineInfo[2] = fieldStartTime.getText(); 
    lyricLineInfo[3] = fieldEndTime.getText(); 
    lyricLineInfo[4] = fieldLyrics.getText(); 
    return lyricLineInfo; 
} 

回答

6

您只創建一個lyricLineInfo。它不應該是一個字段,而應該是在getInfo()方法中創建的局部變量。

也就是說,刪除行

private String[] lyricLineInfo = new String[5]; 

,並添加

String[] lyricLineInfo = new String[5]; 

在你getInfo()方法的第一行。

+1

+1,因爲這是正確的據我所知,但它是,如果你細說更好。 – MByD 2011-12-27 23:21:10

+0

@Binyamin Sharet - 我已經保存了一個部分編輯,並在你寫這篇文章時進行了一些闡述。 – 2011-12-27 23:22:40

+0

謝謝你現在工作正常! – clankfan1 2011-12-27 23:25:34

1

您正在將數組的指針添加到數組列表中,而不是它的副本。所以當你改變數組的時候,它會改變你在數組列表中看到的東西。

嘗試

public void test() 
{ 
    String[] temp = new String[5]; 
    temp = getInfo(); 
    lyricLineNumber.add(temp); 
} 
相關問題