我正在为java编程做作业。我被要求编写一个返回两点之间距离的方法。我应该使用distance = square root((x2 - x1)*(x2 - x1) +(y2 - y1)*(y2 - y1))
的给定公式。
在下面的代码中,对象a
将包含当前坐标x1和y1,b
将是坐标x2和y2,传递给在某些位置移动。
如何在没有其他类和其他元素(如x2,y2)的情况下编写此类中的方法?在对象中有两个值,但我如何将每个值分配给x1和x2,以及y1和y2?我找到了java的vector定义,但我不确定它是否适用于此。有人有想法吗?
public class MyPoint{
private int x;
private int y;
}
public MyPoint(int x, int y){
this.x = x;
this.y = y;
}
public int distanceTo(MyPoint a, MyPoint b){
MyPoint.x1 = a;
MyPoint.y1 = a;
MyPoint.x2 = b;
MyPoint.y2 = b;
double distance = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
return distance;
}
}
答案 0 :(得分:3)
distanceTo方法应该只接受一个参数,一个MyPoint对象,而不是两个参数:
public double distanceTo(MyPoint other) {
// ...
}
比较的第一个对象是当前对象,即调用其方法的对象。
然后在方法体中,将当前对象的字段this.x
和this.y
与传入方法参数other.x
和{的对象的x和y值进行比较。 {1}}。
此外,该方法可能应该返回一个double,而不是你定义的int。
关于,
如何在没有其他类和其他元素(如x2,y2)的情况下编写此类中的方法?
我不确定你到底是什么意思。
答案 1 :(得分:1)
您无需声明MyPoint.x1 = a。那不是真的在做什么。相反,您可以引用a.x
或b.y
等点。
此外,您应该确保您的返回类型符合您的要求。
编辑:气垫船基本上和我说的一样,但更好一点。答案 2 :(得分:0)
public class Point
{
int x,y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public static double distance(Point a, Point b)
{
return Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
public static void main(String[] args)
{
Point a = new Point(0,0);
Point b = new Point(3,5);
System.out.println(distance(a,b));
}
}