请问我已经看过很多答案,但我还没有看到最简单的解决方案来移动阵列。
我想继续移动到数组中的下一个或上一个元素(行和列)。这意味着如果我到达任何行或列的末尾,它会将我带到下一个或前一个,相对于数组的初始化大小。
假设我有一组按钮来处理我的方向事件(左,右,上和下)。
我有:
int twoD[][]= new int[3][3];
输出
0 1 2
3 4 5
6 7 8
我想从
向右移动0,1,2,3,4,5,6,7,8(连续)
我想从
向左移动0,8,7,6,5,4,3,2,1(连续)
我想向上移动
0,8,5,2,7,4,1,6,3(连续)
我想向下移动
0,3,6,1,4,7,2,5,8,0(连续)
答案 0 :(得分:0)
您应该拥有外部和内部数组的当前索引以及数组的长度
int innerIndex = 0;
int outerIndex = 0;
int innerMax = 3;
int outerMax = 3;
如果按下右键,则必须增加内部索引。如果内部索引达到innerMax,您将增加outerIndex
并将innerIndex
设置为0
。 (最好是私人方法)
private void increaseInner() {
innerIndex++;
if (innerIndex == innerMax) {
innerIndex = 0;
outerIndex++;
if (outIndex == outerMax)
outerIndex = 0;
}
}
相当于decrase内部索引:(按下左键)
private void increaseInner() {
innerIndex--;
if (innerIndex < 0) {
innerIndex = innerMax;
outerIndex--;
if (outIndex < 0)
outerIndex = outerMax;
}
}
按下向上按钮和向下按钮的2种方法与这些方法类似。