2014-09-19 37 views
-1

這裏是我的鋸齒形陣列初始化期間工作完全正常:鐵血陣列怪異的行爲

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 

我不能得出任何結論。代碼有什麼問題?

+4

您是否試圖一步步調試代碼?特別是你檢查了這一行發生了什麼:'a [i] = new int [i + 1];'? – assylias 2014-09-19 14:51:21

回答

5

在初始化過程中,您正在爲j創建一個新陣列a[i],並刪除以前的值。
這裏是修正:

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(""); 
} 

正如評論說,這個錯誤是微不足道的一個調試器來解決。該學習如何使用它了;)

+0

感謝您的回答:) – 2014-09-19 15:03:57