在java中填充2d数组

时间:2016-11-14 23:42:09

标签: java arrays

也许有人可以提供帮助!

我需要输出看起来的数组: https://i.stack.imgur.com/uafrY.jpg

但我有: https://i.stack.imgur.com/dOYt5.jpg

我需要在脚本中更改什么?我不需要一个完整的脚本,只需要一些基本的想法,我如何改进这个!

a = 1;
for (i=0; i<=9; i++)

    for (j=9-i; j>=6-i; j--) 
        if (j>=0) {
            A[i][j] = a; a=a+1;

3 个答案:

答案 0 :(得分:0)

以下是将产生所需输出的工作代码:

public static void main(String[] args) {
        int A[][] = new int[10][10];
        int a = 1;
        for(int i = 0; i <= 9; i++) {
            for(int j = 9 - i; j >= 6 - i; j--) {
                if(j >= 0) {
                    A[9-i][j] = a;
                    a = a + 1;
                }
            }
        }

        for(int i = 0; i <= 9; i++) {
            StringBuilder printString = new StringBuilder();
            for(int j = 0; j <= 9; j++) {
                printString.append(A[i][j] + "\t");
            }
            System.out.println(printString);
        }
    }

生成输出:

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

答案 1 :(得分:0)

1)当使用嵌套循环时,我发现将循环变量rowcol命名为明确哪个是有用的。

2)使用递减计数器(a)循环遍历行和列,或者使用递增计数器向后循环行和列。

答案 2 :(得分:0)

您的代码几乎就在那里,除非您将行反转。一个简单的解决方法是在分配值时反转行索引,即将A[i][j]更改为A[9-i][j]

然而,这会得到正确的结果:

  • 如果您检查代码,您会注意到您在两个地方9 - i执行了i,因此row可能会倒数。

  • 您可以考虑advice of Extragorey为变量命名cola = a + 1以澄清其含义。

  • 变量通常应在首次使用时声明。您没有显示您的声明,因此我已将其添加到下方。

  • a++最好写成A,并且可以与j的分配内联。

  • 由于j>=0正在倒计时,因此a检查应添加到循环条件中。

  • 您可以在for-loop初始化程序部分中声明和初始化多个变量,只要它们具有iint[][] A = new int[10][10]; for (int row = 9, a = 1; row >= 0; row--) for (int col = row; col >= row - 3 && col >= 0; col--) A[row][col] = a++; for (int[] r : A) { for (int v : r) System.out.printf("%-4d", v); System.out.println(); } 相同的类型。

因此,这是精炼的代码:

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

输出

leaflet
相关问题