【问题标题】:How to find the sum of all the elements in a 2D array? [closed]如何找到二维数组中所有元素的总和? [关闭]
【发布时间】:2021-03-21 20:37:33
【问题描述】:

我需要找到我的 2D 数组中所有元素的总和,但这些元素是双精度数,并且它们只是作为整数添加。当它应该以59.6 出现时,输出将以55 出现。非常感谢任何形式的帮助。

class Main {
    public static void main(String[] args) {
        double[][] step4 =
                {{1.1,2.2},{3.3,4.4},{5.5,6.6},{7.7,8.8},{9.9,10.10}};
        int sum = 0;
        for (int r = 0; r < step4.length; r++) {
            for (int c = 0; c < step4[r].length; c++) {
                sum += step4[r][c];
            }
        }
        System.out.println(sum);
    }
}

【问题讨论】:

  • int sum = 0;,使这个双精度或可以存储更多精度和小数值的东西。
  • 如果你想要一个double 结果,然后将它们总结在一个double-变量中。

标签: java arrays sum double


【解决方案1】:

将 sum 变量从 int 更改为 double。因为您正在使用双打进行加法,最后您将它们转换为 int。

【讨论】:

  • 感谢您告诉我,我是新手,还不太了解这些功能
【解决方案2】:

您可以为此使用DoubleStream

double[][] arr = {{1.1,2.2},{3.3,4.4},{5.5,6.6},{7.7,8.8},{9.9,10.10}};

double sum = Arrays.stream(arr).flatMapToDouble(Arrays::stream).sum();

System.out.println(sum); // 59.6

【讨论】:

    【解决方案3】:
    class Main {
        public static void main(String[] args) {
            double[][] step4 =
                    {{1.1,2.2},{3.3,4.4},{5.5,6.6},{7.7,8.8},{9.9,10.10}};
            double sum = 0;
            for (int r = 0; r < step4.length; r++) {
                for (int c = 0; c < step4[r].length; c++) {
                    sum += step4[r][c];
                }
            }
            System.out.println(sum);
        }
    }
    

    这是输出:

    【讨论】:

    • 不鼓励仅使用代码的答案。我们更应该解释问题以及我们的解决方案如何解决(它们)。
    • 我明白了兄弟:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2012-12-21
    相关资源
    最近更新 更多