2011-12-27 6 views
0

に追加されているときにリセットされています再度実行された配列はArrayListに追加されますが、他のすべてのArrayList値も新しい配列に置き換えられます。したがって、lyricLineInfo [4]が再び印刷されたとき、それは古い値の代わりに新しい値を出力します。なぜこれをやっているのか誰にも分かりません。私のコードは以下の通りです:JavaのArrayListの値は、新しい値がだから私はこの方法を実行するたびに私のString配列は、私の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の1つだけを作成しています。これはフィールドではなく、getInfo()メソッド内で作成されたローカル変数です。 、と言う

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

行を削除し、getInfo()方法の最初の行として

String[] lyricLineInfo = new String[5]; 

を追加することです

+1

1を試してみては正しい私の知る限りですが、精巧場合、それは良いだろう。 – MByD

+0

@Binyamin Sharet - 私は部分的な編集を保存していて、これを書いたようにちょっと凝っていました。 –

+0

これは今正しく動作しています! – clankfan1

1

POYTERを配列リストに追加します。コピーするのではなく、配列リストに追加します。したがって、配列を変更すると、配列リストに表示されているものが変更されます。

このよう

public void test() 
{ 
    String[] temp = new String[5]; 
    temp = getInfo(); 
    lyricLineNumber.add(temp); 
} 
関連する問題