我已经完成了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");
}
}
首先,你应该添加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是可怕的名字