添加新值时,将重置Java ArrayList值

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)

Don*_*oby 6

你只创造一个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()方法的第一行.