2016-05-20 2 views
1

Я пытаюсь создать список, используя приведенный ниже код, в котором хранятся случайные двоичные строки. Но каждый раз, когда я печатаю строковые элементы списка, все строковые элементы, которые печатаются, одинаковы. ex-101 101 101 101. Как заставить его работать?java - Сохранение последовательности строк в arraylist

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); 
} 
+0

Где вы объявляете 'x1'? У вас есть несколько элементов для добавления? –

+0

Было бы также интересно увидеть ваш метод печати, просто чтобы подтвердить, что вы печатаете все элементы массива, а не только первый, например – Draken

+0

Проблема заключалась в том, что я объявил массив x1 перед циклом. Он содержал элементы, добавленные к нему в последней итерации. Таким образом, все строковые массивы в списке имели одинаковые элементы x1. Я объявил массив внутри цикла, и он работал отлично. – Learning

ответ

1

Вы только объявили один 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); 
} 
+0

Большое спасибо. Я объявлял массив перед циклом, и это вызывало проблему. – Learning

Смежные вопросы