因此,每次运行方法测试时,我的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;
}
答案 0 :(得分:6)
您只创建一个lyricLineInfo
。它不应该是一个字段,而是在getInfo()
方法中创建的局部变量。
也就是说,删除行
private String[] lyricLineInfo = new String[5];
并添加
String[] lyricLineInfo = new String[5];
作为getInfo()
方法的第一行。
答案 1 :(得分:1)
您将数组的POINTER添加到数组列表中,而不是它的COPY。因此,当您更改数组时,它会更改您在数组列表中显示的内容。
尝试
public void test()
{
String[] temp = new String[5];
temp = getInfo();
lyricLineNumber.add(temp);
}