1

次のようなコンストラクターを作成する場合、コンストラクターについて質問があります。
Point originOne = new Point(23, 94); 私がそれを正しく理解していれば、originOne は 23 と 94 を指しています。System.out.println(originOne) で印刷しようとすると、これらの値が得られません。なぜですか?

前もって感謝します!=)

4

6 に答える 6

2

クラス Point の toString() 関数をオーバーライドして、希望どおりに印刷できると確信しています。例:

@Override
public String toString() {
  return this.X + "IEATBABYCLOWNS" + this.Y;
}
于 2013-11-04T09:58:37.423 に答える
0

Pointではないと仮定しjava.awt.Pointます。

(System.out is a ) のオーバーロードされたメソッドの 1 つはオブジェクトをパラメーターとして取り、オブジェクトを使用してオブジェクトの文字列表現を取得し、それを出力するためtoString()Pointクラスをオーバーライドする必要があります。PrintStream#println()PrintStreamtoString()

java.io.PrintStream#println(Object) :

public void println(Object x) {
     String s = String.valueOf(x);
     synchronized (this) {
         print(s);
         newLine();
     }
}

java.lang.String#valueOf(Object) :

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

クラスのオーバーライドは、メソッドとその実装をその中に追加するのと同じくらい簡単です。

@Override
public String toString() {
    return "x = " + x + " - y = " + y;
}
于 2013-11-04T09:57:32.073 に答える
0
 System.out.println(originOne);

これは、そのオブジェクトのクラスの toString メソッドを呼び出します。オーバーライドしなかったので、Object クラスの toString を呼び出します。

于 2013-11-04T09:57:46.697 に答える
0

java.awt.Point.toString() の API の説明:

Returns a string representation of this point and its location in the (x,y) 
coordinate space. This method is intended to be used only for debugging 
purposes, and the content and format of the returned string may vary between 
implementations. The returned string may be empty but may not be null. 

ご覧のとおり、出力は使用する JVM によって異なり、必要なものが得られるとは限りません。

println を次のように変更します。

System.out.println("[" + originOne.getX() + ", " + originOne.getY() + "]")
于 2013-11-04T09:58:24.247 に答える
0

これを試して:

System.out.println(originOne.getX() + " " + originOne.getY());
于 2013-11-04T10:03:20.287 に答える
0

これを試して

メソッドをオーバーライドしtoStringます。あなたのケースについては以下を参照してください

        package test;

        public class Point {

    private int x;
    private int y;

    public Point(int x, int y) {
    this.x = x;
    this.y = y;
   }

   public static void main(String[] args) {

    Point point = new Point(23, 94);

    System.out.println(point);
    }

    @Override
  public String toString() {
    return "x : " + x + " y: "+ y;
   }
 }
于 2013-11-04T10:02:29.347 に答える