【发布时间】:2015-11-14 18:46:44
【问题描述】:
我一直在试图弄清楚如何使用 toString() 方法使系统 println 看起来有意义,但我不知道我应该把这个方法放在哪里才能使代码看起来正确。 所以我添加所有构造函数 + getter 和 settes 的类点是:
public class Point {
double x, y;
public Point() {
x = 0;
y = 0;
}
public Point (double z) {
this.x = z;
this.y = z;
}
public Point(double x, double y) {
this.x = x; this.y= y;
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
void setXY(double x, double y) {
if ( x == y) {
return;
}
this.x = x;
this.y = y;
}
public double odlegloscDo(Point p) {
return Math.sqrt(Math.pow(x, x) + Math.pow(y, y));
}
}
然后在 main 方法中,我将所有日期与新对象以及我真正想做的事情放在一起。并添加了一种方法来简单的公式执行我创建的对象的字段。如下:
public class Odleglosc {
public static void main(String[] args) {
Point p1 = new Point();
Point p2 = new Point(2);
Point p3 = new Point(1,5);
System.out.println("p1: " + p1);
System.out.println("p2: " + p2);
System.out.println("p3: " + p3);
System.out.println("p3 equals p1 = " + p3.equals(p1));
double odleglosc = 0.0;
if (!p3.equals(p1)) {
odleglosc = p1.odlegloscDo(p3);
System.out.println("Odleglosc p1 -> p3 = " + odleglosc);
}
p3.setX(-9);
p2.setY(p3.getY());
double sum = p3.getX() + p2.getX();
p1.setX(sum);
System.out.println("================================");
System.out.println("p1: " + p1);
System.out.println("p2: " + p2);
System.out.println("p3: " + p3);
}
}
所以,主要问题是我得到了这个输出:
p1: zajecia4.Point@139a55
p2: zajecia4.Point@1db9742
p3: zajecia4.Point@106d69c
p3 equals p1 = false
Odleglosc p1 -> p3 = 1.4142135623730951
================================
p1: zajecia4.Point@139a55
p2: zajecia4.Point@1db9742
p3: zajecia4.Point@106d69c
我知道 toString() 方法是如何工作的,我只是不明白把它放在哪里以及如何使我的代码中的打印输出有意义。请帮助我,否则我的导师实际上无法正确解释Java课程将很难前进。 另一件事是我的导师说在我的代码中我也应该将equals方法放在某个地方,但我也不理解他。我已经将它放在我的 if 指令中,但是我应该在哪里放置 equals 方法以便正确比较字段?
【问题讨论】: