1

我是java的初学者,我正在从互联网上做练习题。我偶然发现了这个问题,我被卡住了。

编写一个名为 distance 的方法,它接受四个整数坐标 x1、y1、x2 和 y2 作为参数,并计算笛卡尔平面上点 (x1, y1) 和 (x2, y2) 之间的距离。例如,对 distance(1, 0, 4, 4) 的调用将返回 5.0,对 distance(10, 2, 3, 5) 的调用将返回 7.615773105863909。

public static int distance(int x1,int y1,int x2,int y2){
   int d=(x2-x1)*(x2-x1)-(y2-y1)*(y2-y1))^0.5;
    return (double)d;

}

我想澄清两件事。当我使用 ^ 时,他们一直给我一个错误,说它不能应用。其次,我尝试在等式中的一个数字内输入 double。但它也一直给我一个错误.

4

5 回答 5

3

^是二元异或运算符。

请改用Math.pow。或Math.sqrt(更好)。

您不应将结果转换为int然后再转换为double. 只需使用

public static double distance(int x1,int y1,int x2,int y2){
    return Math.sqrt((x2-x1)*(x2-x1)-(y2-y1)*(y2-y1)));
}
于 2013-03-09T15:48:05.777 回答
1
int d=(x2-x1)*(x2-x1)-(y2-y1)*(y2-y1))^0.5;

在java中,^是XOR运算符。使用Math.pow().

提高到一半的幂,在平方路由中也是一样的,可以用Math.sqrt().

于 2013-03-09T15:48:10.633 回答
0
  1. 如果你想使用 Math.pow() 而不是 ^ 运算符。或 Math.sqrt()
  2. 你不能投双,因为你的方法返回int。将其更改为public static double
于 2013-03-09T15:48:00.770 回答
0

你可以使用Math.sqrt(),它是java数学中的内置方法。

于 2013-03-09T15:48:39.567 回答
0

首先,如果您的小说期望一个 int 值,则您不能返回 double 。其次,您可以使用Math.pow()而不是^,在您的情况下,您可以使用Math.Sqrt(). 第三,如果您想要双倍结果,则需要将您使用的 int 值转换为双倍:

public static double distance(int x1,int y1,int x2,int y2){

    double d = Math.sqrt(((x2-x1)*(x2-x1)-(y2-y1)*(y2-y1)));
    return d;
}
于 2013-03-09T15:55:17.653 回答