2016-03-29 15 views
0

私はJavaの学習を始めて、小さな問題があります。私はクラスを持っています。ポイントとabc:Java、配列作成のトラブル

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

static class abc 
    { 
     abc() 
     { 
      Scanner s = new Scanner(System.in); 
      Point[] p = new Point[2]; 
      for (int i = 0; i < 2; ++i) { 
       p[i].x = s.nextInt(); 
       p[i].y = s.nextInt(); 
      } 
     } 
    } 

しかし、クラスabcの初期化は機能しません。最初の番号を書き込もうとすると、次のようになります。

Exception in thread "main" java.lang.NullPointerException 

    at main$abc.<init>(main.java:91) 

    at main.main(main.java:99) 

これを機能させるにはどうしたらよいですか?

+0

変更

p[i].x = s.nextInt(); p[i].y = s.nextInt(); 

あなたはNPEを解決する必要があります。それを投げるのはどんな線ですか? – Stultuske

+0

'p [i]'にアクセスする前に、 'p [i] = new Point(x、y)'として最初に配列の 'Point'の各インスタンスを初期化する必要があります。 – SomeJavaGuy

+1

参照の配列を作成しても、オブジェクト参照は作成されません。これを見るには、IDEでデバッガを使用して、このエラーが発生したときに何が起きているのかを理解することができます。 –

答えて

3

あなたは、配列内の実際のポイントではなく、ポイントの配列を作成しました。

p[i] = new Point(s.nextInt(), s.nextInt()); 

または

int x = s.nextInt(); 
int y = s.nextInt(); 
p[i] = new Point(x, y); 
+0

私はそれをありがとう、ありがとう。 – Niko13

関連する問題