在java中查找元素位置数组

时间:2016-11-26 15:08:03

标签: java arrays methods position

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

The field looks like this并且定义如下:private static int[][] gamefield = new int[8][6]; 因此,如果我使用方法:findStone(3)[0],它应该为x坐标和findStone(3)1返回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.有人可以解释我做错了什么,我应该改变什么?请,只是简单的解释。我只是刚开始,我没有java经验。 谢谢:))

1 个答案:

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