gpt4 book ai didi

java - 如何用一个循环遍历二维数组?

转载 作者:行者123 更新时间:2023-11-29 07:41:56 26 4
gpt4 key购买 nike

我想知道我是否可以用一个循环而不是两个循环来写这个东西?

for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix[0].length; col++) {
if ((row + col) % 2 == 0) {
System.out.print(matrix[row][col] + ", ");

sum += matrix[row][col];
}
}

System.out.println("with a sum of " + sum);
}

实际上只是忽略了循环体。这完全无关紧要,我不知道为什么要包含它。我的问题是如何以某种方式组合两个 for 循环。

尽可能保持简单。谢谢!

最佳答案

你可以,尽管效率很低:

for(int i = 0 ; i < matrix.length * matrix[0].length ; i++)
sum += matrix[i % matrix.length][i / matrix.length];

基本思想是将每个索引映射到二维数字空间中的一个值,利用我们知道数组每个“行”的长度这一事实 (matrix.length) .我们可以组成一个索引,通过 z = x + y * matrix.length 唯一标识两个索引 matrix[x][y]。反过来就是:

x = z % matrix.length
y = z / matrix.length

这个描述应该是完整的,例如[0 , matrix.length * matrix[0].length) 中的每个 z 都会准确地标识一对索引,因此我们可以在这里使用它。

关于java - 如何用一个循环遍历二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29202242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com