在Java中从矩阵中获取特定坐标

在Java中从矩阵中获取特定坐标,java,matrix,Java,Matrix,我有一个9x9矩阵,但在这篇文章中,我将其缩小,以避免粘贴更大的矩阵。我需要做的是,我需要得到的边缘,对角线,和点不被使用的基础上,一个特定的坐标。 程序的用户将给出x和y的坐标。 下面是矩阵必须如何标记的图例 传奇 X=用户坐标 E=边 D=对角线 =未被使用 我已经讲到了可以提供坐标输入的部分。 但当我试图计算边时,我得到了重复的数字。 我还需要为角落添加逻辑。如果用户在矩阵的角上放置坐标,则不会出现IndexOutOfBounds错误 String[]board=新字符串[9][9];

我有一个9x9矩阵,但在这篇文章中,我将其缩小,以避免粘贴更大的矩阵。我需要做的是,我需要得到的边缘,对角线,和点不被使用的基础上,一个特定的坐标。 程序的用户将给出x和y的坐标。 下面是矩阵必须如何标记的图例

传奇
  • X=用户坐标
  • E=
  • D=对角线
  • =未被使用
我已经讲到了可以提供坐标输入的部分。 但当我试图计算边时,我得到了重复的数字。 我还需要为角落添加逻辑。如果用户在矩阵的角上放置坐标,则不会出现IndexOutOfBounds错误

String[]board=新字符串[9][9];
整数x=Integer.parseInt(clean[0]);
整数y=Integer.parseInt(clean[1]);
板[x][y]=“x”;
列表结果=新建ArrayList();
//坐标(1,5)
结果.add(新整数[]{x--,y});
结果.add(新整数[]{x++,y});
结果.add(新整数[]{x,y++});
结果.add(新整数[]{x,y--});
为了得到对角线,我考虑使用左边缘和右边缘,并将它们的计数增加1和-1

Integer-topLeftDiagonal=新整数[]{x--,y++};
整数bottomLeftDiagonal=新整数[]{x--,y--};
整数topRightDiagonal=新整数[]{x++,y++};
整数bottomRightDiagonal=新整数[]{x++,y--};
我的输出是错误的。 原始坐标:1,5(正确

获取边缘:

X:1 Y:5(错误

X:0 Y:5(正确

X:1 Y:5(错误

X:1 Y:6(正确

如果 获取边缘:

X:2Y:5(

X:0 Y:5(正确

X:1 Y:4错误


X:1 Y:6(正确

我建议不要混合列表和数组。此外,您正在使用增量运算符,这将更新
X
Y
的值。使用
x+1
x-1
等。最后,我建议您创建一个
Coordinate
类,而不是使用
Integer[]
。这更像是OOP。然后可以定义检索边和对角线的方法,例如
getNorthernEdge()
或其他方法。
.   |   D   |   E   |   D   |   .   
.   |   E   |   X   |   E   |   .   
.   |   D   |   E   |   D   |   .