java中从一个类到另一个类的参数和参数

问题描述 投票:-1回答:2

我已经完成了java中的任务,我有两个类,需要计算x和y位置。我得到了一半的测试正确,但似乎无法让最后两个测试正确。你能指导我正确的方向吗?我有一个类calle Point和一个PointMain。我在PointMain中得到了参数,需要在Point中创建正确的方法。我不能在PointMain类中进行任何更改,因为我从赋值中获得了这些更改。

分数点:

public class Point {

    private int x = 0;
    private int y = 0;

    public Point() {

    }

    public Point(int xPoint, int yPoint) {
        x = xPoint;
        y = yPoint;
    }

    public String toString() {
        return x + "," + y;
    }

    public double distanceTo(Point p2) {
        double avstand = Math.sqrt(((p2.x*1 - p2.x*2) * (p2.x*1 - p2.x*2)) + ((p2.y*1 - p2.y*2) * (p2.y*1 - p2.y*2)));
        return avstand;
    }

    public void move(int iPoint, int jPoint) {
        x = x + iPoint; // I have a problem with this that it doesn't add
        y = y + jPoint; // the 3,4 that I got from p2 with the 5,-2.

    }

    public void moveToXY(int xTag, int yTag) {

    }

    public boolean isEqualTo(Point p2) { //And I'm not really sure on how to 
        return false;                    //construct this method either...    
    }

}

Class PointMain:

public class PointMain {

    public static void main(String[] args) {
        Point p1 = new Point();
        Point p2 = new Point(3,4);

        System.out.println(p1.toString());   // ==> (0,0)
        System.out.println(p2.toString());   // ==> (3,4)

        if (p1.isEqualTo(p2))              // False!
            System.out.println("The two points are equal");

        double dist = p1.distanceTo(p2);
        System.out.println("Point Distance: "+dist);

        p2.move(5,-2);         // ==> (8,2)
        p1.moveToXY(8,2);      // ==> (8,2)
            System.out.println(p1);
            System.out.println(p2);
        if (p1.isEqualTo(p2))              // True!
            System.out.println("The two points are equal");

    }

}
java class methods
2个回答
1
投票

首先,你应该添加getter

   public int getX()
   {
      return x;
   }

   public int getY()
   {
       return y;
   }

比实现isEqual

    public boolean isEqualTo(Point p2) {  
    return x == p2.getX() && y == p2.getY();                       
}

你也可以声明x和y public,然后不需要getter,代码就更简单了,你可以在java.awt.Point的实现中看到。我没有看到“移动”功能的问题。最后

public void moveToXY(int xTag, int yTag) {
    x = xTag;
    y = yTag;
}

有关其他信息,您可以查找java.awt.Point如何实现,并处理您的函数参数命名iPoint / jPoint是可怕的名字


0
投票

对于等式方法,请考虑两点相等的条件。考虑使用if验证条件,使用getters获取点x和y。

而且我没有看到move方法有任何问题。

正如@Juniar在评论中所说,你的distanceTo方法还有另一个问题。你想获得p2的x和y,但它们是私有变量,所以你不能通过这种方式获得它们。在这种情况下,您将拥有调用该方法的对象的x和y。所以输出是不可取的。 (再次参见getters

© www.soinside.com 2019 - 2024. All rights reserved.