2016-11-14 80 views
-5

也许有人可以帮忙!在java中填充2d数组

我需要输出数组,看起来: 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; 
+0

欢迎StackOverflow的。首先,您可以通过删除链接来改善*问题*,并将输出**文本**复制/粘贴到问题中,以便我们可以读取/复制,比较您所指的文本,非常难以做到与图像(因此,通常downvotes)。谢谢! – davedwards

+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 
+0

将它们向后打印并不是解决方案以获得阵列正确。问题是关于如何获得正确的数组,而不是打印确切的输出。 – Andreas

+0

@Andreas,解决方案很简单,然后,而不是打印它,只需创建另一个数组并添加这些值。我没有看到有什么意见可以降低答案。 –

+0

我投了票,因为答案是**没有用**来解决正确构建*数组*的问题。而创建第二个数组几乎不是正确的答案,当你所要做的就是正确地开始构建它。 – Andreas

0

1)当使用嵌套循环我发现它的帮助来命名循环变量rowcol来明确哪个是哪个。

2)使用递减计数器(a)或通过递增计数器向后循环通过行和列循环。

0

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

,将让你在正确的结果,但是:

  • 如果检查代码,你会发现你在两个地方做9 - i,所以也许i应倒数。

  • 您可以考虑advice of Extragorey来命名变量rowcol以阐明它们的含义。

  • 变量通常应该在首次使用时声明。你没有显示你的声明,所以我在下面添加了它们。

  • a = a + 1最好写成a++,并且它可以内嵌完成,分配到A

  • 由于j正在倒计时,所以只需将j>=0检查添加到循环条件中即可。

  • 您可以在for-loop初始化程序部分中声明和初始化多个变量,只要它们具有相同的类型即可,其中ai可以执行此操作。从而

这里是精制的代码:

int[][] 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