Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法将另一个对象作为参数_Java_Object_Parameters_Distance_Points - Fatal编程技术网

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

我正在做java编程的家庭作业。我被要求写一个返回两点之间距离的方法。我应该使用给定的公式
距离=平方根((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文件中。这就是我想说的。谢谢