【发布时间】:2017-06-05 21:53:34
【问题描述】:
我编写了一个函数,将 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]
我对此感到非常困惑,因为我很确定该功能没有任何问题,因为我单独进行了测试并且它工作得很好。它不可能是数组列表,因为我用 c# 编写了整个项目,而且它也工作得很好。
【问题讨论】:
-
你传递的列表的大小是多少?
-
@NirajPatel 每次都不一样。这取决于决策树。
-
您是否有多个线程正在运行?理想情况下,提供minimal reproducible example 来演示问题...
-
好吧,您可以尝试提供minimal reproducible example,正如我之前提到的。如果我们可以重现它,我相信我们可以解决它。 (不清楚代码中注释掉的行是关于什么的。您确定在运行代码并生成输出时它们仍然被注释掉吗?)
-
请发一个minimal reproducible example,我们可以复制粘贴自己运行。具体来说,您需要对一些输入进行硬编码并调用此函数。如果我们看不到您的意见,我们将很难为您提供帮助。
标签: java arrays arraylist integer processing