Java 将二维数组中每列的所有元素相加
我有一个虚拟2D数组:Java 将二维数组中每列的所有元素相加,java,arrays,multidimensional-array,sum,Java,Arrays,Multidimensional Array,Sum,我有一个虚拟2D数组: int mat[][]={ {10, 20, 30, 40, 50, 60, 70, 80, 90}, {15, 25, 35, 45}, {27, 29, 37, 48}, {32, 33, 39, 50, 51, 89}}; 我想按列将所有值相加,这样它将添加10+15+27+32并返回84,依此类推。到目前为止,我有: 公共无效和(int[][]数组){ 整数计数=0; for(int rows=0;rows
int mat[][]={
{10, 20, 30, 40, 50, 60, 70, 80, 90},
{15, 25, 35, 45},
{27, 29, 37, 48},
{32, 33, 39, 50, 51, 89}};
我想按列将所有值相加,这样它将添加10+15+27+32
并返回84
,依此类推。到目前为止,我有:
公共无效和(int[][]数组){
整数计数=0;
for(int rows=0;rows
有人能帮忙吗?还有
System.out.print(数组[行][列]+“\t”)代码>按行打印数组,有没有办法按列打印?使用ArrayList获取所有列的总和
public static void sum(int[][] array) {
ArrayList<Integer> sums = new ArrayList<>();
for (int row = 0; row < array.length; row++) {
for (int column = 0; column < array[row].length; column++) {
if (sums.size() <= column) {
sums.add(column, 0);
}
int curVal = sums.get(column);
sums.remove(column);
sums.add(column, curVal + array[row][column]);
}
}
for (int i = 0; i < sums.size(); i++) {
System.out.println("Sum of column " + i + " = " + sums.get(i));
}
}
公共静态无效和(int[][]数组){
ArrayList总和=新的ArrayList();
for(int row=0;row if(sums.size()使用ArrayList获取所有列的总和
public static void sum(int[][] array) {
ArrayList<Integer> sums = new ArrayList<>();
for (int row = 0; row < array.length; row++) {
for (int column = 0; column < array[row].length; column++) {
if (sums.size() <= column) {
sums.add(column, 0);
}
int curVal = sums.get(column);
sums.remove(column);
sums.add(column, curVal + array[row][column]);
}
}
for (int i = 0; i < sums.size(); i++) {
System.out.println("Sum of column " + i + " = " + sums.get(i));
}
}
公共静态无效和(int[][]数组){
ArrayList总和=新的ArrayList();
for(int row=0;row 如果(sums.size(),一个可能的解决方案是首先找到所有子数组的最大大小,并迭代多次以找到每列的和,从而避免不可用的值
publicstaticvoidmain(字符串[]args){
int mat[][]={{10,20,30,40,50,60,70,80,90},
{15, 25, 35, 45},
{27, 29, 37, 48},
{32, 33, 39, 50, 51, 89},
};
//查找子数组的最大可能长度
int maxLength=0;
对于(int i=0;i
一种可能的解决方案是首先找到所有子数组的最大大小,然后反复多次找到每列的总和,以避免不可用的值
publicstaticvoidmain(字符串[]args){
int mat[][]={{10,20,30,40,50,60,70,80,90},
{15, 25, 35, 45},
{27, 29, 37, 48},
{32, 33, 39, 50, 51, 89},
};
//查找子数组的最大可能长度
int maxLength=0;
对于(int i=0;i
…与lambda相同:
int[]array=Arrays.stream(mat)
.reduce((a1,a2)->IntStream.range(0,数学最大值(a1.length,a2.length))
.map(i->i
获取int[]数组中每列的和:
[84, 107, 141, 183, 101, 149, 70, 80, 90]
[84, 107, 141, 183, 101, 149, 70, 80, 90]
…lambda也一样:
int[]array=Arrays.stream(mat)
.reduce((a1,a2)->IntStream.range(0,数学最大值(a1.length,a2.length))
.map(i->i
获取int[]数组中每列的和:
[84, 107, 141, 183, 101, 149, 70, 80, 90]
[84, 107, 141, 183, 101, 149, 70, 80, 90]
您可以使用方法按列汇总矩阵行的元素:
int[][]矩阵={
{10, 20, 30, 40, 50, 60, 70, 80, 90},
{15, 25, 35, 45},
{27, 29, 37, 48},
{32, 33, 39, 50, 51, 89}};
int[]arr=Arrays.stream(矩阵)
//结对总结
//矩阵的行
.reduce((第1行,第2行)->IntStream
//迭代索引
//从0到最大行长度
.范围(0,数学最大值(行1.length,行2.length))
//成对地总结两行的元素
.map(i->(i
另见:
•
•您可以使用方法按列汇总矩阵行的元素:
int[][]矩阵={
{10, 20, 30, 40, 50, 60, 70, 80, 90},
{15, 25, 35, 45},
{27, 29, 37, 48},
{32, 33, 39, 50, 51, 89}};
int[]arr=Arrays.stream(矩阵)
//结对总结
//矩阵的行
.reduce((第1行,第2行)->IntStream
//迭代索引
//从0到最大行长度
.范围(0,数学最大值(行1.length,行2.length))
//成对地总结两行的元素
.map(i->(i[84, 107, 141, 183, 101, 149, 70, 80, 90]