2016-10-08 4 views
1

コンパイラの問題: "mass [i] .mainN = scan.nextInt();"行のNullPointerExceptionが発生しました。私の考えでは、すべての変数 "mainN"と配列 "mass"を初期化しました。例外の理由は何でしょうか?配列内のNullPointerException

Robo[] mass = new Robo[N]; 
for(int i = 0; i < mass.length; i++) { 
    mass[i]= new Robo(); // Add this line 
    mass[i].mainN = scan.nextInt(); 
    mass[i].auxiliary = scan.nextInt(); 
} 

Javaはnull要素の配列を割り当てられた:配列の初期化

import java.util.Scanner; 

public class Robotics{ 

public static void main(String[] args) { 

    Scanner scan = new Scanner(System.in); 
    int N = scan.nextInt(); 
    Robo[] mass = new Robo[N]; 
    for(int i = 0; i < mass.length; i++) { 
     mass[i].mainN = scan.nextInt(); 
     mass[i].auxiliary = scan.nextInt(); 
    } 
    scan.close(); 
} 

class Robo{ 
    int mainN; 
    int auxiliary; 
} 
+0

NullPointerExceptionは実行時の問題ではなく、コンパイルの問題ではありません:) –

答えて

0

が十分ではなく、あなたはまた、個々の要素を初期化する必要があります。これは特に直感的ではなく、特にC++に事前に晒されていたプログラマーにとってはそうではありません。