Java 检查数组的两个元素是否在对角线上的最佳方法

Java 检查数组的两个元素是否在对角线上的最佳方法,java,Java,我有数组(不是基本对象)数组的两个元素的索引: 第一个元素=制表符[x0][y0] 第二个元素=制表符[x1][y1] 我想检查这两个元素是否都是对角的,比如: _________________ | | * | | | ----------------- | | | | | ----------------- | | | | * | ----------------- | | | | | ----------------- 这里这两个点

我有数组(不是基本对象)数组的两个元素的索引:
第一个元素=制表符[x0][y0]
第二个元素=制表符[x1][y1]

我想检查这两个元素是否都是对角的,比如:

_________________
|   | * |   |   |
-----------------
|   |   |   |   |
-----------------
|   |   |   | * |
-----------------
|   |   |   |   |
-----------------
这里这两个点都是对角的,所以我们应该返回true。
但是检查它的最好方法是什么呢?

只要看看坐标就可以了。位于对角线上意味着
x
坐标和
y
坐标的差异相同。因此:

boolean is_diagonal = (x1 - x0) == (y1 - y0);

如果x坐标和y坐标之间的差相同,则两个点是对角的

x0 - x1 == y0 - y1
对角if

int x = x0 - x1 = 2
int y = y0 - y1 = 2

boolean diagonal = x == y;

指数的任何其他组合都会给你一个等式,这意味着它们不是对角的。您可能还需要使用Math.abs()

将数组视为笛卡尔坐标空间,并计算连接两个元素(点)的直线的(上升超过):

如果
rise
除以
run
为1或-1,则这两个元素构成对角线。1或-1确定对角线的方向。您只需检查它们是否具有相同的符号和大小,而不是进行分割:

if (Math.abs(rise) == Math.abs(run)) {
    if (Integer.signum(rise) == Integer.signum(run)) {
        // diagonal
    } else {
        // diagonal that is another direction
    }
} else {
    // not diagonal
}
if (Math.abs(rise) == Math.abs(run)) {
    if (Integer.signum(rise) == Integer.signum(run)) {
        // diagonal
    } else {
        // diagonal that is another direction
    }
} else {
    // not diagonal
}