2

私は4つのクラスを持っています。1 つは抽象エンティティ クラス、1 つはボール クラス、1 つはメイン クラス、もう 1 つはスクリーン クラスです。

ボール クラスはエンティティ クラスを拡張し、5 つの変数を持ちます。

screen 関数には paint メソッドがあります。

public void paint(Graphics g){
    super.paint(g);
    ball.paint(g);
}

もちろん、ball.paint を使用するには、そのオブジェクトを作成する必要があります。そこで、ボール オブジェクトを作成します。

Ball ball;

そして、これをスクリーン コンストラクターに追加する必要があるためです (Ball には 5 つの変数を受け取るコンストラクターがあります)。

public Screen(){
    ball = new Ball(ball.getWeight(), ball.getWidth(), ball.getHeight(), ball.getX(), ball.getX());
}

これでエラーは発生しませんが、プログラムを実行すると、コンソールに次のエラーが表示されます。

Exception in thread "main" java.lang.NullPointerException
at h3x.engine.gfx.Screen.<init>(Screen.java:18)
at h3x.engine.Main.main(Main.java:16)

メインクラスの 16 行目は次のとおりです。

frame.add(new Screen());

...そして、screen クラスの 18 行目は次のとおりです。

ball = new Ball(ball.getWeight(), ball.getWidth(), ball.getHeight(), ball.getX(), ball.getX());

だから私の質問は、なぜこれが起こっているのか、どうすれば修正できるのかということです. 必要に応じて、コード全体をクラスに入れることができます。

ありがとう!

4

3 に答える 3

2

あなたの問題はこの行です:

ball = new Ball(ball.getWeight(), ball.getWidth(), ball.getHeight(), ball.getX(), ball.getX());

ballまだ存在しない値を割り当てようとしています。代わりにいくつかの実際の値を渡します。

ball = new Ball(5, 4, 2, 7, 7);
于 2013-06-07T17:13:42.030 に答える