2015-10-25 22 views
-1

我能夠編寫打印二維陣列的方法:Java方法

{a,b,c},    
    {d,e,f}, 
    {g,h,i}, 

爲這樣:

a db gec hf i 

這裏是方法:

public static void d2(int[][] b){ 
    for(int k = b.length - 1 ; k > 0; k--) { 
     for(int j = 0 ; j < b.length ; j++) { 
     int i = k - j; 
     if(i < b.length && j < b.length) { 
      System.out.print(b[i][j] + " ");} 
      } 
     System.out.println();} 
     } 
    } 

現在我想寫一個方向,在負方向對角打印,這將是:

g dh aei bf c 

我在原始方法中需要更改哪些內容以使其打印出另一條對角線?

感謝

+0

你有什麼試過,結果是什麼?正如你在學校所做的那樣,請展示你的工作。 :)這是在SO上獲得問題的過程中的一部分。這對你很有幫助,因爲它會迫使你調查自己的問題並思考問題。這也向讀者證明你做了功課,並做出了合理的嘗試來回答你自己的問題。第三,它可以幫助讀者找到和診斷問題,爲您提供更好的答案,減少浪費時間。 – JeffC

+0

我試過這個,但int k循環結束,所以它停止在數組之間打印。我需要添加第二個嵌套for循環嗎? (int k = b.length-1; k> 0; k--){ for(int j = 0; j user3600008

回答

0

沒有得到你所提到的輸出,而不是得到了ArrayIndexOutOfBoundsException。下面是這給預期輸出相同的節目的修改版本:

int b[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; 
    // for (int i = (b.length * 2) - 1; i >= 0; i--) { 
    for (int i = 0; i < (b.length * 2); i++) { 
     for (int j = i, k = 0; j >= 0; j--, k++) 
      if (j < b.length && k < b.length) 
       System.out.print(b[j][k] + " "); 
     System.out.println(); 
    } 

爲了扭轉,只需取消/發表評論其他i循環。 i循環充當計數器或水平追蹤器(如現在我們正在穿過的對角線)。所以,根據i的值,j & k初始化自己&在對角線方向上循環。

由於方向相同&您只需要一個相反的順序,只需更改i循環即可。因此,它不是從0thnth對角線,而是相反; nth0th對角線。