在2D数组中查找数字的对角线?

时间:2016-03-29 22:40:24

标签: java arrays matrix diagonal

如果我有以下5x5矩阵,请说

wb

我必须检查矩阵中的字符是否与另一个字符串对齐,我是按照以下方式检查它们,

{ ,  , T ,  , }
{ , T , T , , }
{ ,  , T ,  , }
{ , T,  ,  ,  }
{T,  ,  ,  ,  }

char T随机分配在棋盘上。如果在对角线上存在另一个T,我需要在放置char T时进行检查。

该方法采用行和列,并检查板上是否存在char T以及是否与另一个T对角。

如果row = 0且col = 4或row = 1且col = 5等等......它将失败并将数组抛出界限。

将对角线对齐到矩阵中的任何数字并避免边缘情况的有效方法是什么?

PS:我正在尝试用Java编写代码

1 个答案:

答案 0 :(得分:0)

我会创建一个获取元素的方法,如果坐标无效,则返回默认值。除了搜索的内容之外,只需使用默认值即可。

public char getWithDefault(int row, int col, char default ) {
  if ((0 <= row) && ( row < board.length) &&
      (0<=col) && (col < board[row].length)) {
    return board[row][col];
  }
  return default;
}

public boolean isDiagonal(int row,int col){
  // arbitrary default value, as long as it is != 'T'
  if (getWithDefault(row,col,'1') != 'T') return false;
  if (getWithDefault(row+1,col+1,'1') == 'T') return true;
  if (getWithDefault(row+1,col-1,'1') == 'T') return true;
  if (getWithDefault(row-1,col+1,'1') == 'T') return true;
  if (getWithDefault(row-1,col-1,'1') == 'T') return true;
  return false;
}

从你的代码中,我推断board是一个char数组的数组。