RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 812693
Accepted
Oleg Khegay
Oleg Khegay
Asked:2020-04-11 20:58:30 +0000 UTC2020-04-11 20:58:30 +0000 UTC 2020-04-11 20:58:30 +0000 UTC

如何创建一个数组并并排和底部并排输出每行和列的总和?

  • 772

好人,
假设给定一个数组:

4 3 1 2  
1 7 2 2  
3 3 5 0   

结果应该是:

4 3 1 2  10  
1 7 2 2  12  
3 3 5 0  11  
8 13 8 4

有一个数组输出代码:

public static void main(String[] args) {
    int r = 4;
    int col = 6;
    int[][] mat = new int[r][col];
    for (int i = 0; i < mat.length; i++) {
        for (int j = 0; j < mat[i].length; j++) {
            mat[i][j] = (int) (Math.random() * 10);
        }
    }
    int sum = 0;
    // Вывод матрицы
    for (int i = 0; i < mat.length; i++, System.out.println()) {
        for (int j = 0; j < mat[i].length; j++) {
            System.out.print(mat[i][j] + " ");
        }
    }
}

我知道如何分别显示每一行的总和,但这不是你需要的......

java
  • 4 4 个回答
  • 10 Views

4 个回答

  • Voted
  1. Alex Chermenin
    2020-04-11T21:42:17Z2020-04-11T21:42:17Z

    可以通过以下方式解决,使用 Stream API 和自写的收集器:

    int[][] array = new int[][]{
        {4, 3, 1, 2},
        {1, 7, 2, 2},
        {3, 3, 5, 0}
    };
    
    int[] count = new int[]{0};
    
    int[][] collectedResult = Arrays.stream(array).map(ints -> {
        int[] result = new int[ints.length + 1];
        Array.copy(ints, 0, result, 0, ints.length);
        result[result.length - 1] = IntStream.of(ints).sum();
        return result;
    }).collect(
        () -> new int[array.length + 1][array[0].length + 1],
        (result, inter) -> {
            result[count[0]++] = inter;
            result[result.length - 1] =
                IntStream.range(0, inter.length)
                    .map(i -> result[result.length - 1][i] + inter[i])
                    .toArray();
        },
        (array1, array2) -> { }
    );
    
    System.out.println(Arrays.deepToString(collectedResult));
    

    结果:

    [
      [4, 3, 1, 2, 10],
      [1, 7, 2, 2, 12],
      [3, 3, 5, 0, 11],
      [8, 13, 8, 4, 33]
    ]
    

    如果不需要最后一个数字(所有数字的总和),您可以不显示它。

    • 2
  2. MBo
    2020-04-11T21:24:28Z2020-04-11T21:24:28Z

    一种方法(ideone)是为总和设置数组:

       int [] csums = new int[col];
       int [] rsums = new int[r];
    

    计算填充循环中的总和:

               mat[i][j]= (int)(Math.random()*10);
                csums[j] +=  mat[i][j];
                rsums[i] += mat[i][j];
    

    并把它们带出来

                ...
                System.out.print(mat[i][j]+" ");
            }
            System.out.print(rsums[i]);
        } 
        for (int j=0;j < csums.length;j++){
    
                System.out.print(csums[j]+" ");
    
    • 0
  3. Best Answer
    Oleg Khegay
    2020-04-11T23:42:55Z2020-04-11T23:42:55Z
    public static void main(String args[]) {
        int row = 4, col = 6;
        int[][] mat = new int[row][col];
        int[] colsum = new int[col];
    
        for (int i = 0; i < mat.length; i++) {
            int sum = 0;
            for (int j = 0; j < mat[i].length; j++) {
                mat[i][j] = (int) (Math.random() * 10);
                sum += mat[i][j];
                colsum[j] += mat[i][j];
                System.out.print(mat[i][j] + "\t");
            }
            System.out.println("| " + sum);
        }
    
        System.out.print("-\t-\t-\t-\t-\t-\n");
        for (int val : colsum) {
            System.out.print(val + "\t");
        }
    }
    
    • 0
  4. user420361
    2021-12-13T20:40:51Z2021-12-13T20:40:51Z
    int[][] arr = {{4, 3, 1, 2}, {1, 7, 2, 2}, {3, 3, 5, 0}};
    
    // суммируем строки и выводим результат справа
    Arrays.stream(arr)
            .map(row -> Arrays.toString(row) + " " +
                    Arrays.stream(row).sum())
            .forEach(System.out::println);
    
    // суммируем колонки в выводим результат снизу
    System.out.println(IntStream.range(0, arr[0].length)
            .map(i -> IntStream.range(0, arr.length)
                    .map(j -> arr[j][i]).sum())
            .mapToObj(String::valueOf)
            .collect(Collectors.joining("  ")));
    
    // [4, 3, 1, 2] 10
    // [1, 7, 2, 2] 12
    // [3, 3, 5, 0] 11
    // 8  13  8  4
    
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5