Java:移动一个二维数组

时间:2015-12-08 14:37:42

标签: java arrays events direction

请问我已经看过很多答案,但我还没有看到最简单的解决方案来移动阵列。

我想继续移动到数组中的下一个或上一个元素(行和列)。这意味着如果我到达任何行或列的末尾,它会将我带到下一个或前一个,相对于数组的初始化大小。

假设我有一组按钮来处理我的方向事件(左,右,上和下)。

我有:

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(连续)

1 个答案:

答案 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种方法与这些方法类似。