Java 方法将另一个对象作为参数
我正在做java编程的家庭作业。我被要求写一个返回两点之间距离的方法。我应该使用给定的公式Java 方法将另一个对象作为参数,java,object,parameters,distance,points,Java,Object,Parameters,Distance,Points,我正在做java编程的家庭作业。我被要求写一个返回两点之间距离的方法。我应该使用给定的公式距离=平方根((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)) 在下面的代码中,对象a将包含在当前坐标x1和y1中,b将包含在坐标x2和y2中,并传递到某个位置移动 如何在没有其他类和其他元素(如x2、y2)的情况下在这个类中编写方法?在对象中有两个值,但如何将它们分别指定给x1和x2以及y1和y2?我找到了vector for java的定义,但我不确定它是否适用于此。有人有主意吗 pub
距离=平方根((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
在下面的代码中,对象a
将包含在当前坐标x1和y1中,b
将包含在坐标x2和y2中,并传递到某个位置移动
如何在没有其他类和其他元素(如x2、y2)的情况下在这个类中编写方法?在对象中有两个值,但如何将它们分别指定给x1和x2以及y1和y2?我找到了vector for java的定义,但我不确定它是否适用于此。有人有主意吗
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;
}
}
distanceTo方法应只接受一个参数,即MyPoint对象,而不是两个参数:
public double distanceTo(MyPoint other) {
// ...
}
比较的第一个对象将是当前对象,即调用其方法的对象
然后在方法体中比较当前对象的字段,this.x
和this.y
与传递到方法参数的对象的x和y值,other.x
和other.y
此外,该方法可能应该返回double,而不是定义的int
关于,
如何在没有其他类和其他元素(如x2、y2)的情况下在这个类中编写方法
我不确定您的确切意思。distanceTo方法应该只接受一个参数,一个MyPoint对象,而不是两个参数:
public double distanceTo(MyPoint other) {
// ...
}
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));
}
}
比较的第一个对象将是当前对象,即调用其方法的对象
然后在方法体中比较当前对象的字段,this.x
和this.y
与传递到方法参数的对象的x和y值,other.x
和other.y
此外,该方法可能应该返回double,而不是定义的int
关于,
如何在没有其他类和其他元素(如x2、y2)的情况下在这个类中编写方法
我不确定您的确切意思。您不需要声明MyPoint.x1=a。那真的没什么用。相反,您可以参考点,如
a.x
或b.y
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));
}
}
此外,你应该确保你的返回类型是你想要的
编辑:气垫船说的基本上和我说的一样,但稍微好一点。你不需要声明MyPoint.x1=a。那真的没什么用。相反,您可以参考点,如
a.x
或b.y
此外,你应该确保你的返回类型是你想要的
编辑:气垫船基本上和我说的一样,但有点好。皇后学院,兰多的Java课程?离题:使用
Math.pow(x2-x1,2)
而不是(x2-x1)*(x2-x1)
。一般来说,当你必须做幂运算时,使用Math.pow(表达式,幂)
@BackSlash:off-topic,但是如果他在做大量计算,那么编写的代码,(x2-x1)*(x2-x1)
,比使用Math.pow要好。您应该对此进行分析以了解原因。皇后学院,兰多的Java课程?非主题:使用Math.pow(x2-x1,2)
而不是(x2-x1)*(x2-x1)
。一般来说,当你必须做幂运算时,使用Math.pow(表达式,幂)
@BackSlash:off-topic,但是如果他在做大量计算,那么编写的代码,(x2-x1)*(x2-x1)
,比使用Math.pow要好。您应该对此进行分析以了解原因。@Vnquish46:谢谢您的输入。这是我的。@Vnquish46:谢谢你的意见。这是我的,谢谢你的密码。它发出编译错误“找不到符号”,尽管我从您的代码中得到了解决该问题的提示。我很感激!谢谢你的完整代码。它发出编译错误“找不到符号”,尽管我从您的代码中得到了解决该问题的提示。我很感激@谢谢你的回答。使用一个参数,我没有考虑它,但它确实有意义。顺便说一句,让我澄清一下你没有理解的问题。我在下面引用了这个网页。它很好地解释了这个方法虽然有三个java文件,但它还是以一个对象作为参数。我需要将所有内容放在一个java文件中。这就是我想说的。谢谢。@Hovercreaft:谢谢你的回答。使用一个参数,我没有考虑它,但它确实有意义。顺便说一句,让我澄清一下你没有理解的问题。我在下面引用了这个网页。它很好地解释了这个方法虽然有三个java文件,但它还是以一个对象作为参数。我需要将所有内容放在一个java文件中。这就是我想说的。谢谢