簡體   English   中英

將對象轉換為 sysout 輸出中的字符串,java

[英]convert object to String in sysout output, java

我一直在試圖弄清楚如何放置 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 方法放在哪里才能正確比較字段?

toString方法返回對象的字符串表示形式。 您需要以這種方式覆蓋它:

public class Point {
    double x, y;
    ...

    @Override
    public String toString() {
        return x + " - " + y;
    }
}

輸出將是:

p1: 0 - 0
p2: 2 - 0
p3: 1 - 5

關於Equals方法,它也可以用同樣的方式覆蓋:

public class Point {
    double x, y;
    ...

    @Override
    public String toString() {
        return x + " - " + y;
    }

    @Override
    public boolean equals(Point point) {
        return this.x == point.x && this.y = point.y;
    }
}

.equals方法的效用在於它允許您測試值的相等性,而不是引用相等性(通常使用“==”來實現)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM