2011-09-14 21 views
0

好,做我的研究和沒有發現任何東西。在它的頭上翻轉陣列?

在Java中,一個二維數組通常會打印下來,然後離開(或然後離開向下取決於你如何字的for循環)。但是我怎樣才能拍到同樣的數組,然後將它左打印出來呢?我不想翻轉陣列本身,因爲我打算添加到它(所以說,而不是有18行,有idk,30遊戲中)。

所以我的問題是:如何從底部打印在Java中的二維數組,上漲?

回答

1

開始從終端:

for (int i = arr.length - 1; i >=0; --i) { 
    for (int j = arr[i].length -1; j >= 0; --j) { 
     System.out.println(arr[i][j]); 
    } 
} 
0

如果你的意思是 「向下和向左」 是這樣的:

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

再 「自下而上」 將是這樣的:

for (int i = arr.length-1; i >= 0; i--) { 
    for (int j = arr[i].length-1; j >= 0; j--) { 
     System.out.print(arr[i][j] + " "); 
    } 
    System.out.println(); 
} 
0

...反向指標在for循環...

或者,如果您使用新的快速枚舉for循環,切換到索引。

或者,通過array.length指數 - 我 - 1

1

雖然其他的答案更容易和更簡潔,如果你這樣做的時候,你可以寫交替會遍歷以相反的順序排列的迭代器:

public class ReverseArrayIterator<T> implements Iterator<T> { 
    private final T[] myArray; 
    private int pointer; 

    public ReverseArrayIterator(T... myArray) { 
     this.myArray = myArray; 
     pointer = myArray.length; 
    } 

    @Override 
    public boolean hasNext() { 
     return pointer > 0; 
    } 

    @Override 
    public T next() { 
     if (!hasNext()) 
      throw new NoSuchElementException(); 
     return myArray[--pointer]; 
    } 

    @Override 
    public void remove() { 
     throw new UnsupportedOperationException(); 
    } 
}