• 締切済み

コンパイルされない理由

下のプログラミングをコンパイルするとエラーになるのですがどうしてですか?Javaの仕様だからといえばそれまでなのですが… また、どこを直したらよいのか教えてください。 class Point{ int x; int y; static void setPosition(int x,int y){ this.x = x; this.y = y; } }

みんなの回答

回答No.3

class Point { int x; int y; void setPosition(int x, int y) { this.x = x; this.y = y; } } or class Point { static int x; static int y; static void setPosition(int x, int y) { Point.x = x; Point.y = y; } }

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

static なメソッドは、インスタンスが作成されてなくても呼び出せなくてはいけません。 つまり、 Point a = new Point(); とかしてなくていきなり Point.setPosition(x, y); と呼び出せなくてはいけませんが、 この場合、 >this.x = x; >this.y = y; のインスタンス変数がありませんから実行できません。 >int x; >int y; が static int X; static int Y; だったら public static void setPosition(int x,int y){ X=x; Y=y; } (this は、インスタンスを表すので使えません) ではできます。 というより、static メソッドにしなければよいと思います。

すると、全ての回答が全文表示されます。
回答No.1

staticメソッド(この場合setPositionメソッド)で非static変数を使おうとしているからではないでしょうか? (確かそんな制限があったと思います) このコードだけでは詳しいことは言えませんが、staticを外せばコンパイルはできるようになります。

すると、全ての回答が全文表示されます。

関連するQ&A