我是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;
}
我要澄清的两件事。当我使用^时,他们会继续给我一个错误,说它无法应用。其次,我尝试在等式中的一个数字内部投两个。但它一直给我也是一个错误。
答案 0 :(得分:3)
^
是二进制XOR运算符。
您不应将结果转换为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)
答案 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;
}