import java.util.Scanner;
import java.lang.Integer;
public class points{
private class Vertex{
public int xcoord,ycoord;
public Vertex right,left;
}
public points(){
Scanner input = new Scanner(System.in);
int no_of_pts = Integer.parseInt(input.nextLine());
Vertex[] polygon = new Vertex[no_of_pts];
for(int i=0;i<no_of_pts;i++){
String line = input.nextLine();
String[] check = line.split(" ");
polygon[i].xcoord = Integer.parseInt(check[0]);
polygon[i].ycoord = Integer.parseInt(check[1]);
}
}
public static void main(String[] args){
new points();
}
}
これは、x座標とy座標を使用してn個の点をシステムに入力する非常に単純なプログラムです
Sample Input :
3
1 2
3 4
5 6
ただし、「1 2」を入力すると NullPointerException がスローされます。Javaデバッグを使用して、問題のある行を見つけました
polygon[i].xcoord = Integer.parseInt(check[0]);
ただし、チェック変数は '1' と '2' を正しく表示します。何がうまくいかないのですか?
編集:答えのおかげで、配列の各要素を新しいオブジェクトに初期化する必要があることに気付きました
polygon[i] = new Vertex();