有一个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;
}
但它不适用于所有情况......
提前致谢.....
答案 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);
}