我有一个2d数组,里面有很多零和其他一些值。在第一步中,我将一列中的所有行相加,以找出每列的和。求和的结果保存在数组列表中。现在我需要比较2D-Array中的每个值是否等于数组列表中对应列的和。如果是相等的,该行的第一个值将保存在一个单独的数组列表中。
例如:
{A, 0, 0, 6, 0}
{B, 0, 2, 0, 2}
{C, 0, 1, 0, 0}
{D, 3, 0, 0, 2}
Arraylist {3, 3, 6, 4}
我想将每个值与数组列表中相同位置的值进行比较。
我的代码:
List sumList = new ArrayList();
for(int c = 1; c < excelMatrix.length; c++){
int sum = 0;
for(int r = 0; r < excelMatrix.length-1; r++){
sum = excelMatrix[r][c] + sum;
sumList.add(sum);
}
}
List checkList = new ArrayList();
for(int c = 1; c < excelMatrix.length; c++){
for(int r = 0; r < excelMatrix.length-1; r++){
if(excelMatrix[r][c].equals(sumList)){
checkList.add(excelMatrix[r][0]);
}
}
}
在数组值与数组列表的值进行比较之前,一切正常
您正在将整数与列表进行比较,而不是与列表中相应列值的总和进行比较。
如果excelMatrix
是Integer
数组,按以下方式执行:
if(excelMatrix[r][c].equals(sumList.get(c-1)))
,
if(excelMatrix[r][c] == sumList.get(c-1))
您没有在示例代码中指定类型,因此我假设它如下:
String[][] excelMatrix = {{"A", "0", "0", "6", "0"},
{"B", "0", "2", "0", "2"},
{"C", "0", "1", "0", "0"},
{"D", "3", "0", "0", "2"}};
List<String> sumList = new ArrayList<>();
sumList.add("3");
sumList.add("3");
sumList.add("6");
sumList.add("4");
并像这样修改你的for
循环:
List<String> checkList = new ArrayList<>();
for(int c = 0; c < excelMatrix.length; c++){
for(int r = 1; r < excelMatrix[0].length; r++){
if(excelMatrix[c][r].equals(sumList.get(r-1))){
checkList.add(excelMatrix[c][0]);
}
}
}
结尾
for(int i = 0; i<checkList.size(); i++){
System.out.print(checkList.get(i));
}
为
广告
这与你想要的答案完全无关。用于计算列元素总和的代码是错误的。使用下面的代码来获得正确的和列表。
List sumList = new ArrayList();
for(int c = 0; c < excelMatrix.length; c++){
int sum = 0;
for(int r = 0; r < excelMatrix.length; r++){
sum = excelMatrix[r][c] + sum;
System.out.println(sum);
}
sumList.add(sum);
}