在头上翻转一个阵列?

时间:2011-09-14 19:37:03

标签: java arrays

好的,我的研究没有找到任何东西。

在Java中,2D数组通常向下打印然后向左打印(或向左打印然后向下打取,具体取决于您对for循环的说法)。但是我如何才能使用相同的阵列,并将其左右打印?我不想翻转阵列本身,因为我打算添加它(所以说,而不是有18行,有idk,30中游)。

所以我的问题是:如何从底部向上打印Java中的2D数组?

4 个答案:

答案 0 :(得分: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]);
    }
}

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

答案 2 :(得分: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();
}

答案 3 :(得分:0)

...反转for循环中的索引...

或者,如果您正在使用新的快速枚举for循环,请切换到索引。

或者,索引由array.length - i - 1