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