0

可能重复:
GameLogic,x in a row game

checkPositionRow 说明:

****checkPositionRow public static boolean checkPositionRow(char[][] a, int row, int col, int l) 检查指定单元格是否是包含相同字符的水平连续单元格序列的一部分。单元序列的长度必须为 l。

参数:

  • a- char 类型的二维矩形数组。

  • row- 有问题的单元格的行

  • col- 有问题的单元格的列

  • l- 所需的序列长度 返回: true - 如果单元格是长度至少为 l 的水平序列的一部分;错误 - 否则。****

无法让这个游戏运行,如果他们连续 5 个或更多,则需要游戏返回 true。这是我的尝试(不起作用,只是一直返回 true,但是当序列小于 5 时我需要它返回 false):

public static boolean checkPositionRow(char[][] a, int row, int col, int l){
  int counter = 1;

  for (int i=0; i<a.length; i++) {
    if(a[row][i] == a[row][i+1]) {
      counter++;

      if(counter >= 5){
        return true;
      }                  
    }
  }

  return false;
}

我究竟做错了什么?帮助!

4

1 回答 1

0
if(a[row][i] == a[row][i+1]){
    ...
}else{
  //reset counter
  counter = 1;
}

应该i<a.length需要i<a.length -1elsea[row][i+1]才能给出越界异常。a[row].length正确的长度

if(counter >= l){
  //l = required length
  return true;
}  

重写一段时间

public static boolean checkPositionRow(char[][] grid, int row, int col, int requiredLength) {
  int counter = 0;
  int index = 0;
  char[] charRow = grid[row];
  char charToLookFor = grid[row][col];
  while (index < charRow.length && counter < requiredLength) {
    if (charToLookFor == charRow[index]) {
      counter++;
    } else {
      counter = 0;
    }
    index++;
  }
  return counter == requiredLength;
}

您可以检查长度行是否大于或等于所需长度

  public static boolean checkPositionRow(char[][] grid, int row, int col, int requiredLength) {
    int counter = 0;
    char[] charRow = grid[row];
    if (charRow.length >= requiredLength) {
      int index = 0;
      char charToLookFor = grid[row][col];
      while (index < charRow.length && counter < requiredLength) {
        if (charToLookFor == charRow[index]) {
          counter++;
        } else {
          counter = 0;
        }
        index++;
      }
    }
    return counter == requiredLength;
  }
于 2012-12-06T11:54:50.353 回答