2016-03-08 2 views
0

Ниже приведен фрагмент кода для извлечения части массива. Мой arraylist full содержит около 3000 строк с 193 цифрами, разделенными пробелами в каждой строке. Теперь я хочу разделить мой arraylist, чтобы получить первые 48 цифр в каждой строке, то есть мой последний «ocr» arraylist должен содержать 3000 строк с 48 цифрами, разделенными пробелом в каждой строке.Разбиение arraylist java

Здесь, когда я пытаюсь копировать temp на ocr, а затем печатать ocr, я получаю весь массив, а не подсчет. Что не так в этом коде?

void extractData(){ 

    ArrayList<points> test1 = new ArrayList<points>(); 
    points temp = new points(); 

    for (points p : full){ 
     for (int i = 0; i < 48; i++){ 
      temp.x[i] = p.x[i]; 
     } 
     ocr.add(temp); 

    } 
    for (points pp : ocr) 
     System.out.println(pp);  
} 
+1

Вы добавляете один и тот же один объект 'temp' к' ocr' несколько раз, потому что вы создаете его вне цикла. Вероятно, это часть вашей проблемы, хотя я не могу сказать, все ли это проблема, потому что у вас недостаточно контекста. – Boann

+2

Также, пожалуйста, соблюдайте соглашения об именах Java, чтобы сделать ваш код доступным для чтения. Классы начинаются с буквы верхнего регистра. –

ответ

0

Ваша временная переменная «temp» повторно используется на каждой итерации. Переместите объявление внутри внешнего цикла, чтобы исправить его.

void extractData() 
{ 

    List<points> test1 = new ArrayList<>(); 

    for (points p : full) 
    { 
     points temp = new points(); 
     for (int i = 0; i < 48; i++) 
     { 
      temp.x[i] = p.x[i]; 
     } 
     ocr.add(temp); 

    } 
    for (points pp : ocr) 
    { 
     System.out.println(pp); 
    } 
} 

Также обратите внимание на соглашения об именах Java, упомянутые в комментариях.

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