Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将二维数组中每列的所有元素相加_Java_Arrays_Multidimensional Array_Sum - Fatal编程技术网

Java 将二维数组中每列的所有元素相加

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

我有一个虚拟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

有人能帮忙吗?还有
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;rowif(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]