好的,我的研究没有找到任何东西。
在Java中,2D数组通常向下打印然后向左打印(或向左打印然后向下打取,具体取决于您对for循环的说法)。但是我如何才能使用相同的阵列,并将其左右打印?我不想翻转阵列本身,因为我打算添加它(所以说,而不是有18行,有idk,30中游)。
所以我的问题是:如何从底部向上打印Java中的2D数组?
答案 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