java-在arraylist中存储字符串序列

java-在arraylist中存储字符串序列,java,Java,我正在尝试使用下面的代码创建一个列表,该列表存储随机二进制字符串。但每次我打印列表的字符串元素时,所有打印的字符串元素都是相同的。 ex-101。我如何让它工作 ArrayList<String[]> coded = new ArrayList<String[]>(); Random rand = new Random(); for(int j=0; j<4;j++){ for (int i=0; i<3;i++){ ran

我正在尝试使用下面的代码创建一个列表,该列表存储随机二进制字符串。但每次我打印列表的字符串元素时,所有打印的字符串元素都是相同的。 ex-101。我如何让它工作

ArrayList<String[]> coded = new ArrayList<String[]>();
Random rand = new Random();

for(int j=0; j<4;j++){  

    for (int i=0; i<3;i++){  
        rand1 = (rand.nextInt(4)+0)%2;
        x1[i]= "" + rand1;
    }  
    coded.add(x1);
}  
ArrayList coded=new ArrayList();
Random rand=新的Random();

对于(int j=0;j您只声明了一个
x1
数组(某处),因此本质上您只是将一组对同一数组的引用添加到列表中。该数组将包含上次迭代期间插入的值

在循环中声明数组以修复问题

for (int j=0; j<4; j++){  
    String[] x1 = new String[3];

    for (int i=0; i<3; i++){  
        rand1 = (rand.nextInt(4) + 0) % 2;
        x1[i]= "" + rand1;
    }  

    coded.add(x1);
}  

用于(int j=0;jx1在哪里声明?
?是否要添加多个数组?查看打印方法也会很有趣,只是为了确认您正在打印数组的所有元素,而不仅仅是第一个元素,例如,问题是我在循环之前声明了数组x1。它包含在上一次迭代。所以列表中的所有字符串数组都有相同的x1元素。我在循环中声明了数组,它工作得非常好。非常感谢。我在循环之前声明了数组,这就是问题的根源。