cla*_*an1 0 java arrays 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;
}
Run Code Online (Sandbox Code Playgroud)
你只创造一个lyricLineInfo.它不应该是字段,而是在getInfo()方法内创建的局部变量.
也就是说,删除该行
private String[] lyricLineInfo = new String[5];
Run Code Online (Sandbox Code Playgroud)
并添加
String[] lyricLineInfo = new String[5];
Run Code Online (Sandbox Code Playgroud)
作为您getInfo()方法的第一行.