参数(整数)

时间:2013-03-09 15:45:40

标签: java

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

编写一个名为distance的方法,它接受四个整数坐标x1,y1,x2和y2作为参数,并计算笛卡尔平面上点(x1,y1)和(x2,y2)之间的距离。 例如,距离调用(1,0,4,4)将返回5.0,距离调用(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;

}

我要澄清的两件事。当我使用^时,他们会继续给我一个错误,说它无法应用。其次,我尝试在等式中的一个数字内部投两个。但它一直给我也是一个错误。

5 个答案:

答案 0 :(得分:3)

^是二进制XOR运算符。

请改用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)));
}

答案 1 :(得分:1)

int d=(x2-x1)*(x2-x1)-(y2-y1)*(y2-y1))^0.5;

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

提升到一半的功率,在方形路由中是相同的,可以使用Math.sqrt()来完成。

答案 2 :(得分:0)

  1. 如果您想要使用Math.pow()而不是^运算符。或者Math.sqrt()
  2. 您无法转换double,因为您的方法返回 int 。将其更改为 public static double

答案 3 :(得分:0)

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

答案 4 :(得分: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;
}