2017-01-20 13 views
0

Я пишу функцию, которая суммирует элементы массивов в 2d списка и добавить их в 1d списке:Неожиданный результат в ArrayList целое - PDE

ArrayList<Integer> sumList(ArrayList<int[][]> list,int side){ 
    ArrayList<Integer> sums= new ArrayList<Integer>(); 
    for(int[][] array : list){ 
    int arraySum = 0; 
    //arraySum += CalcMove(array,side); 
     for(int i = 0; i < 8; i++){ 
      for(int j = 0; j < 8; j++){ 
      arraySum+=array[i][j]; 
      } 
     } 
     sums.add(arraySum); 
     //println(arraySum); 
    } 
    println(sums); 
    //sums.add(0); 
    //println(sums); 
    return sums; 
    } 

Проблема заключается в том, результат совершенно не имеет значения, неоднозначно и даже не в списке. Println Результат:

[-232, -232, -232] -232 [-232, -232, -232] -232 [-223, -223, -223] -223 [ -223, -223, -223, -223] -223 [-219, -219, -219] -219 [-214, -214, -214] -214 [-14, -14, -14 ] -14 [-10, -10, -10] -10 [-5, -5, -5] -5 [-4, -4, -4, -4] -4 [-4, -4, -4] -4, -4, -4] -4 [-4, -4, -4, -4] -4 [-4, -4, -4, -4] -4 [-4, -4 , -4, -4] -4 [-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 , -4, -4] -4 []

Но когда я добавить еще один элемент вне петель (в данном случае это ноль), то результат будет ОК (я до сих пор не уверен, что это) , Println результат после этого:

[-232, -232, -232, 0]

Я совершенно запутался об этом, так как я уверен, что функция не имеет каких-либо проблем потому что я тестировал индивидуально, и все работает отлично. И это не могло быть причиной arraylist, я написал весь проект в C#, и он тоже работал отлично.

+0

Каков размер списка, которую вы передаете? –

+0

@NirajPatel Каждый раз разные. это зависит от деревьев решений. –

+1

У вас есть несколько потоков, запущенных на любой случай? В идеале предоставьте [mcve], демонстрирующую проблему ... –

ответ

1

Вот метод, который собирает все целое число в массиве 2d и помещает их в список.

public static List<Integer> listElements(int[][] array) { 
     List<Integer> list = new ArrayList<Integer>(); 
     for (int[] subArray : array) { 
      IntStream.of(subArray).forEach(i -> list.add(i)); 
     } 
     return list; 
    }