在Java中查找元素位置阵列



我需要在Java中为游戏编写一些方法,其中一个是Int [] Findstone。该方法返回一个数组,该数组给出了我要搜索的元素的坐标。

字段看起来像这样,并且是这样定义的: private static int[][] gamefield = new int[8][6];因此,如果我使用该方法:Findstone(3)[0],则应为X坐标和Findstone(3)1,2返回0。这是我编写的代码。

private static int[] findStone(int stone) {
        int[] position = new int[2];
        for(int x = 0; x < 8; x++ ){
            for(int y = 0; y < 6; y++ ) {
                int a = gamefield[x][y];
                int i = x;
                int j = y;
                if(a == stone) {
                    position[0] = i;
                    position[1] = j;
                }
                break;
            }
        }
        return position;
    }

问题是:该方法仅返回第一行的X坐标,因为其他元素向我展示0。有人可以向我解释我做错了什么,我应该更改什么?请,只有简单的解释。我只有一开始就在爪哇没有经验。谢谢:)

您可能打算将break子句放入if块中。您现在拥有它的方式,break关键字没有效果。它只是打破了内部循环(使用y变量),但是由于该代码块无论如何都在这里结束,所以它无能为力。

您正在搜索地图上的一个点,因此,当您找到石头位置时,您可以立即将其归还,因为无关。

此外,您不需要其他变量aij。使用它们不是错误的,但是代码看起来更清晰,没有它们,更简洁。看看此代码:

private static int[] findStone(int stone) {
    int[] position = new int[2];
    for (int x = 0; x < 8; x++) {
        for (int y = 0; y < 6; y++) {
            if (gamefield[x][y] == stone) {
                position[0] = x;
                position[1] = y;
                return position;
            }
        }
    }
    return null; // if there's no given stone
}

最新更新