1

私はJavaを学んでいて、簡単なスクリプトを実行しようとしています。私は次のようなクラスを持ってPointいます:

package user_package;

public class Point {
    float x;
    float y;
    float z;

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

    public static Point add(Point p1, Point p2){
        return new Point(p1.x + p2.x, p1.y + p2.y, p1.z + p2.z);
    }
}

次に、次のようなメインファイルがあります。

import user_package.Point;
import static user_package.Point.add;

class Tutorial{
    public static void main(String[] args){

        float x1 = 1, y1 = 1, z1 = 1;
        float x2 = 2, y2 = 2, z2 = 2;

        Point p1 = new Point(x1, y1, z1);
        Point p2 = new Point(x2, y2, z2);

        Point p3 = add(p1, p2);

        System.out.println(p3);
    }
}

これは Netbeans で行います。エラーは発生せず、ビルドは成功しますが、出力は次のとおりです。

user_package.Point@68e26d2e

私は自分自身を検索しようとしましたが、何も見つかりませんでした。何が問題なのか、どうすれば解決できるのか教えてください。

4

5 に答える 5

1

class のオブジェクトを印刷していますPointprintln()メソッドがクラスを出力する方法を知らない場合、その名前を出力します。だからこそ、このような結果が得られます。

次のいずれかの方法で実行できます。

System.out.println(p3.x + ", " + p3.y + ", " + p3.z);

または、SURESH ATTAが提案したように、クラスtoString()のメソッドをオーバーライドすることによってPoint(つまり、Pointクラスを学習して、印刷したいときにどのように動作するかを知ることができます)。

于 2013-09-24T07:13:47.293 に答える