我目前正在研究一种计算2D数组中每行总和的方法。但是我遇到一个特殊方面的问题,因为我想计算每行绝对值的总和,然后返回4行中的最大值。因此,例如在我的代码中,最大值将是rowTotalTwo,其总和为20。
答案 0 :(得分:0)
纯粹和基本的java ...
public static void main(String[] args) {
int[][] num = {// 0 1 2 3
{4, 6, 9, 3},
{6, 2, 4, 1},
{8, 3, 7, 9}
};
int[] total = new int[num[0].length];
for (int i=0; i < total.length;i++){
total[i] = 0;
}
for (int i = 0; i < num.length; i++) {
for (int j = 0 ; j < total.length; j++) {
total[j] += num[i][j];
}
}
for (int i=0; i < total.length;i++){
total[i] = Math.abs(total[i]);
}
int max = 0;
for (int i=0; i < num.length;i++){
if (max < total[i])
max = total[i];
}
System.out.println("max : " + max);
}
使用Collection
int max = (int)Collections.max(Arrays.asList(ArrayUtils.toObject(total)));
使用流
int max = Arrays.stream(total).max().getAsInt();
答案 1 :(得分:0)
你可以这样做,在这种情况下你不必改变你的代码
Math.max(Math.max(Math.abs(rowTotalZero), Math.abs(rowTotalOne)), Math.max(Math.abs(rowTotalTwo), Math.abs(rowTotalThree)));