锯齿状阵列奇怪的行为

时间:2014-09-19 14:48:39

标签: java arrays jagged-arrays

这是我的锯齿状数组,在初始化期间完全正常工作:

   int a[][]=new int[5][];

   for(int i=0;i<5;i++)
    {
   for(int j=0;j<=i;j++)
      {
       a[i]=new int[i+1];
       a[i][j]=j+1;
       System.out.print(a[i][j]);
      }
       System.out.println("");
   }

给我想要的输出:

1
12
123
1234
12345

但是使用循环打印相同的数组只会产生荒谬的输出:

  for(int i=0;i<5;i++)
       {
       for(int j=0;j<=i;j++)
         {
          System.out.print(a[i][j]);
         }
          System.out.println("");
       }

给出:

1
02
003
0004
00005

我无法得出任何结论。代码有什么问题?

1 个答案:

答案 0 :(得分:5)

您正在初始化期间为每个a[i]j中创建一个新数组,从而删除之前的值。
这是更正:

int a[][]=new int[5][];

for(int i=0;i<5;i++)
{
  a[i]=new int[i+1];
  for(int j=0;j<=i;j++)
  {
    a[i][j]=j+1;
    System.out.print(a[i][j]);
  }
  System.out.println("");
}

如评论中所述,使用调试器解决此错误很简单。是时候学习如何使用它了;)