在 java 中查找元素位置数组
Find element position array in java
我需要为 java 中的游戏编写一些方法,其中之一是 int[] findStone。方法 return 是一个数组,它给出了我正在搜索的元素的坐标。
The field looks like this 定义如下:private static int[][] gamefield = new int[8][6];
因此,如果我使用方法:findStone(3)[0],x 坐标和 findStone(3)1 应为 return0,2。这是我编写的代码。
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;
}
问题是:该方法仅 returns 正确地显示了第一行的 x 坐标,对于其他元素,它显示为 0。有人可以解释我做错了什么以及我应该更改什么?请,只是简单的解释。我才刚刚起步,没有 java 的经验。
谢谢:)
您可能打算将 break
子句放在 if
块中。按照您现在的方式,break
关键字无效。它只是打破了内部循环(使用 y
变量),但是由于这段代码无论如何都在这里结束,所以它什么都不做。
您正在搜索地图上的一个点,所以当您找到石头位置时,您可以立即return它,因为没有其他事情要做。
此外,您不需要额外的变量,a
、i
和 j
。使用它们并没有错,但是没有它们代码看起来更清晰、更简洁。看看这段代码:
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
}
我需要为 java 中的游戏编写一些方法,其中之一是 int[] findStone。方法 return 是一个数组,它给出了我正在搜索的元素的坐标。
The field looks like this 定义如下:private static int[][] gamefield = new int[8][6];
因此,如果我使用方法:findStone(3)[0],x 坐标和 findStone(3)1 应为 return0,2。这是我编写的代码。
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;
}
问题是:该方法仅 returns 正确地显示了第一行的 x 坐标,对于其他元素,它显示为 0。有人可以解释我做错了什么以及我应该更改什么?请,只是简单的解释。我才刚刚起步,没有 java 的经验。 谢谢:)
您可能打算将 break
子句放在 if
块中。按照您现在的方式,break
关键字无效。它只是打破了内部循环(使用 y
变量),但是由于这段代码无论如何都在这里结束,所以它什么都不做。
您正在搜索地图上的一个点,所以当您找到石头位置时,您可以立即return它,因为没有其他事情要做。
此外,您不需要额外的变量,a
、i
和 j
。使用它们并没有错,但是没有它们代码看起来更清晰、更简洁。看看这段代码:
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
}