编写一个函数,它将两个点作为输入,如果它们在java中是相互对角的,则返回

时间:2014-06-26 08:48:07

标签: java

有一个m * n网格 网格中的这个pont由两个坐标表示。例如(4,5)。

编写一个函数,它将两个点作为输入,如果它们相互诊断则返回

例如:

点(0,1)与(2,3)对角,但不是(2,2)。

我的代码:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Give X-coordinate of first point:");
    int x1 = sc.nextInt();
    System.out.println("Give Y-coordinate of first point:");
    int y1 = sc.nextInt();
    System.out.println("Give X-coordinate of second point:");
    int x2 = sc.nextInt();
    System.out.println("Give Y-coordinate of second point:");
    int y2 = sc.nextInt();
    if (diagCheck(x1, y1, x2, y2)) {
        System.out.println("yes,the points are diagonal");
    } else {
        System.out.println("no,the points are not diagonal");
    }

}

public static boolean diagCheck(int a, int b, int c, int d) {
    boolean diag = false;
    if (a * d == b * c) {
        diag = true;
    }
    return diag;
}

但它不适用于所有情况......

提前致谢.....

2 个答案:

答案 0 :(得分:1)

你必须比较绝对差值Math.abs(x1-x2)和绝对差值Math.abs(y1-y2);当且仅当这些点彼此对角时,它们是相等的。

答案 1 :(得分:1)

public static boolean diagCheck(int x1, int y1, int x2, int y2) {        
    return Math.abs(x1-x2) == Math.abs(y1-y2);
}