带有嵌套循环的java10x10数组

l5tcr1uw  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(450)

我有一个10x10数组,我试图用嵌套循环填充它

int A[][] = new int [10][10];

到目前为止,我已经创造了这个-

C = 1;
        for (i=0; i<=9; i++)
            for (j=9-i; j>=7-i; j--) 
                 if (j>=0) {
                    A[i][j] = C; C=C+1;
                }

这是目前为止的结果。
但是我尝试用两个for循环来创建它,但无法管理它。
谢谢你的帮助!

tcbh2hod

tcbh2hod1#

这应该可以做到:
像往常一样迭代从0到10的行,将列索引设置为9并减小它
在内部循环中,将范围设置为 iMath.max(i - beltWidth + 1, 0) 包容性( beltWidth 列中非零值的最大计数,在本例中为3)。

final int size = 10;
final int beltWidth = 3;
int A[][] = new int [size][size];

int c = 1;
for (int i = 0, j = size - 1; i < size; i++, j--) {
    for (int k = i; k >= Math.max(i - beltWidth + 1, 0); k--) {
        A[k][j] = c++;
    }
}

for (int[] r : A) {
    for (int x : r) {
        System.out.printf("%2d  ", x);
    }
    System.out.println();
}

输出

0   0   0   0   0   0   0   6   3   1  
 0   0   0   0   0   0   9   5   2   0  
 0   0   0   0   0  12   8   4   0   0  
 0   0   0   0  15  11   7   0   0   0  
 0   0   0  18  14  10   0   0   0   0  
 0   0  21  17  13   0   0   0   0   0  
 0  24  20  16   0   0   0   0   0   0  
27  23  19   0   0   0   0   0   0   0  
26  22   0   0   0   0   0   0   0   0  
25   0   0   0   0   0   0   0   0   0
uklbhaso

uklbhaso2#

这是我的版本。我从亚历克斯的回答中借用了漂亮的printf格式:)我只想提两件事:
我想如果把i和j叫做y和x,会更容易阅读
我似乎记得,如果需要性能,就需要沿着x轴遍历数组,因为这就是获取cpu缓存的方式(至少在理论上是这样)。这会使算法更复杂一些,但我猜在这种情况下,我们并不真正关心性能,所以在内环中有y就可以了:)

int dimension = 10;
        int[][] result = new int[dimension][dimension];

        int C = 27;
        int yOffset = 9;
        for (int x = 0; x < dimension; x++) {
            for (int y = Math.min(2, yOffset); y >= 0 && yOffset - y >= 0; y--) {
                result[yOffset - y][x] = C--;
            }
            yOffset--;
        }

        for (int[] y : result) {
            for (int x : y) {
                System.out.printf("%2d  ", x);
            }
            System.out.println();
        }

输出

0   0   0   0   0   0   0   6   3   1  
 0   0   0   0   0   0   9   5   2   0  
 0   0   0   0   0  12   8   4   0   0  
 0   0   0   0  15  11   7   0   0   0  
 0   0   0  18  14  10   0   0   0   0  
 0   0  21  17  13   0   0   0   0   0  
 0  24  20  16   0   0   0   0   0   0  
27  23  19   0   0   0   0   0   0   0  
26  22   0   0   0   0   0   0   0   0  
25   0   0   0   0   0   0   0   0   0

相关问题