这是我的锯齿状数组,在初始化期间完全正常工作:
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
我无法得出任何结论。代码有什么问题?
答案 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("");
}
如评论中所述,使用调试器解决此错误很简单。是时候学习如何使用它了;)