【发布时间】:2016-03-29 22:40:24
【问题描述】:
如果我有以下 5x5 矩阵,可以说
{ , , T , , }
{ , T , T , , }
{ , , T , , }
{ , T, , , }
{T, , , , }
我必须检查矩阵中的字符是否与另一个矩阵对角线,我正在通过以下方式检查它们,
public boolean isDiagonal(int row,int col){
if (row == board.length-1 && board[row-1][col+1] == 'T') {
return true;
} else if (col == board.length -1 && board[row+1][col-1] == 'T') {
return true;
} else if (board[row][col] == 'T' && board[row+1][col+1] == 'T' ||
board[row][col] == 'T' && board[row-1][col-1] == 'T') {
return true;
} else if (board[row][col] == 'T' && board[row-1][col+1] == 'T' ||
board[row][col] == 'T' && board[row+1][col-1] == 'T') {
return true;
}
return false;
}
字符 T 随机分配到板上。我需要在放置 char T 时检查是否存在另一个 T 对角线。
该方法获取行和列并检查字符 T 是否存在于板上,以及它是否与另一个 T 对角线。
如果 row = 0 和 col = 4 或 row = 1 和 col = 5 等等......它将失败并抛出数组越界。
获取矩阵中任意数字的对角线并避免边缘情况的有效方法是什么?
PS:我正在尝试用 Java 编写代码
【问题讨论】:
-
您的用户名非常合适。您是否为每个问题创建一个新帐户?
-
@Gendarme 不,我为什么要这样做? :)
-
我不理解你的代码。为什么
'T'?为什么row需要等于board.length-1? -
@Gendarme 这是因为我正在检查字符“T”是否彼此对角存在。第一个和第二个条件是为了避免极端情况而编写的。
-
但是您的矩阵由数字 1 到 5 组成。你也说"如果输入0为行...";用户正在输入该行吗?你的方法实际上是什么?我希望它类似于
areDiagonal(int a, int b)来检查a和b在矩阵中任何地方 是否彼此对角线。
标签: java arrays matrix diagonal