arraylist整数中的意外结果 - pde

时间:2017-01-20 20:10:51

标签: java arrays arraylist integer processing

我编写了一个函数,它总结了2d列表中数组的元素,并将它们添加到1d列表中:

  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 []

但是当我在循环外添加另一个元素(在这种情况下它为零)时,结果将是正常的(我仍然不确定)。之后的println结果:

  

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

我对此完全感到困惑,因为我很确定该功能没有任何问题,因为我单独测试并且它工作得很好。它不可能是arraylist因为我用c#编写了整个项目并且它的工作也很好。

1 个答案:

答案 0 :(得分:1)

这是一个收集二维数组中所有整数并将它们放入列表的方法。

    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;
    }