如何检查索引是否已被占用?

时间:2016-02-22 20:55:25

标签: java arrays

我正在使用2D阵列开发棋盘游戏程序。因为在棋盘游戏中你可以将你的石头放入已经有石头的牢房里。在Java中是否有办法检查索引是否已被占用?例如,

int[][] board = new int[5][5];

我想检查用户或程序是否已选择cell [1][3],并使用while循环告诉用户选择另一个未被选中的单元格?

4 个答案:

答案 0 :(得分:1)

我将使用布尔属性创建一个对象并使用它创建一个数组。 例如:

public class myField{
    private bool chosen = false;
    private ... 
    ....
}

用法:

public class main{
    private myField[][] board = new myField[5][5];
    ....
}

检查是否被占用:

if(board[1][3].chosen == true)
{
    //doSomething
}

答案 1 :(得分:1)

看看这个小Java样本Chess Applet。它对空方块使用值0,对边框字段使用1。这也简化了边界检查。该板的尺寸为10x12。

其他值大致代表材料值 - 白色为正值,黑色为负值。因此,如果两个对手都拥有相同的棋子,则余额为0

答案 2 :(得分:1)

Java将对象数组初始化为null,ints为0,浮点数为0.0,booleans为false,因此您可以检查索引是否等于0.即

.btn

答案 3 :(得分:0)

您应该定义一个未使用的单元格,例如:

boolean[][] initMap(int x, int y) {
   boolean[][] result = new boolean[x][y];
}

boolean isOccupied(int[][] map, int x, int y) {
  return map[x][y]; 
}

boolean putARock(boolean[][] map, int x, int y) {
   if(isOccupied(map)) {
      map[x][y] = true;
      return true;
   } else {
      return false;
   } 
}

/* somewhere in main or GUI code */

boolean[][] map = initMap(x,y);

boolean isPuttingDone = false;

do {
  isPuttingDone = putARock(map, getXFromKeyboard(), getYFromKeyboard());
} while (!isPuttingDone);

您必须编写正确的方法来从用户输入中获取X和Y(或者您可以采用不同的方式)。这不是真正的OO代码。