java - 总结 Java 中二维整数数组中的外部元素?

标签 java arrays loops multidimensional-array nested-loops

我的考试题目之一要求编写一些代码来计算二维数组外部 int 元素的总和。行长和列长不一定相等。

[编辑] 不能多次添加角值。

我想出了这个代码并且它有效,但我想知道是否有更有效的方法来实现相同的结果。谢谢。

for(int i = 0; i < in.length; i ++) { for(int j = 0; j < in[i].length; j++) { if(i == 0 || i == in.length - 1) { sum += in[i][j]; } else { sum += in[i][in[i].length - 1 ] + in[i][0]; break; } } }

最佳答案

如果我理解你的问题,那么你可以先提取一个方法来添加一个数组的元素,比如

public static int sumArray(int[] in) {
    int sum = 0;
    for (int val : in) {
        sum += val;
    }
    return sum;
}

然后你可以在第一行和最后一行添加元素

int sum = sumArray(in[0]) + sumArray(in[in.length - 1]);

然后来自其他行的外部元素带有一个额外的(非嵌套)循环

for (int i = 1; i < in.length - 1; i++) {
    sum += in[i][0] + in[i][in[i].length - 1];
}

或者,在 Java 8+ 中,您可以消除额外的方法和显式循环,并用一个语句来完成,例如

int sum = IntStream.of(in[0]).sum() //
        + IntStream.of(in[in.length - 1]).sum() //
        + IntStream.range(1, in.length - 1).map(i -> {
            return in[i][0] + in[i][in[i].length - 1];
        }).sum();

关于java - 总结 Java 中二维整数数组中的外部元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40457671/

相关文章:

java - 需要详细了解 "@"符号在 Google Cloud Apache Beam 代码中的使用方式

java - SonarQube 暗示 var 不为空

c - 为什么终端中的输出不会并排排列

c++ - 进度条功能不循环

c++ - 在for循环C++中添加先前迭代中的元素

java - Log4j2 创建日志文件但不写入它

java - 实例化 hibernate 配置会抛出错误 : Exception in thread "main" java. lang.NoClassDefFoundError: javax/xml/bind/JAXBException

javascript - 删除对象数组中的空对象键

javascript - 数组大小的实际限制

typescript - Foreach 数组以在 TypeScript 中显示值