2016-08-20 3 views
0

Javaを初めて使用する場合。 30行目でNull Pointer Exceptionを取得しています。私は例外が発生することを避けるために配列が宣言されたときに配列を初期化する必要があることを知っています。しかし、この場合、初期化される配列のサイズはわかりません。だから、誰かがこのエラーを修正する方法を説明してもらえますか?変数を宣言して初期化するときに何が起こるかについても説明できますか? import java.util。*;ヌルポインタ整数配列の例外

class Person { 
    protected String firstName; 
    protected String lastName; 
    protected int idNumber; 

// Constructor 
Person(String firstName, String lastName, int identification){ 
    this.firstName = firstName; 
    this.lastName = lastName; 
    this.idNumber = identification; 
} 

// Print person data 
public void printPerson(){ 
    System.out.println(
      "Name: " + lastName + ", " + firstName 
     + "\nID: " + idNumber); 
    } 

} 

class Student extends Person{ 
private int[] testScores; //exception Here 

Student(String firstName,String lastName,int id,int[] scores){ 
     super(firstName,lastName,id); 
     for(int i=0;i<scores.length;i++) 
      { 
       testScores[i]=scores[i]; 
     } 
} 

char calculate(){ 
    int avg=0,i=0; 
    for(i=0;i<testScores.length;i++) 
      { 
      avg=avg+testScores[i]; 
     } 
    avg=avg/(i+1); 
    if(avg>=90 && avg<=100) 
     return 'O'; 
    else if(avg>=80 && avg<90) 
     return 'E'; 
    else if(avg>=70 && avg<80) 
     return 'O'; 
    else if(avg>=55 && avg<70) 
     return 'P'; 
    else if(avg>=40 && avg<55) 
     return 'D'; 
    else 
     return 'T'; 
} 
} 
+0

'int [] score 'スコアが' null'だった可能性があります。 –

+0

これは「線30」ですか?そこにコメントを入れて... – Plirkee

+0

'Student'クラスのコンストラクタ内で' testScores'を初期化する必要があります: 'testScores = new init [scores.length];' '単に' testScores = scores; 'をコピーしてください。 http://stackoverflow.com/questions/1200621/how-to-declare-an-arrayを参照してください。 –

答えて

0

アレイを間違って初期化しています。それが例外をスローする理由です。 配列を初期化する方法はたくさんあります。

int[] numbers1 = new int[3];     // Array for 3 int values, default value is 0 
int[] numbers2 = { 1, 2, 3 };    // Array literal of 3 int values 
int[] numbers3 = new int[] { 1, 2, 3 };  // Array of 3 int values initialized 
int[][] numbers4 = { { 1, 2 }, { 3, 4, 5 } }; // Jagged array literal 
int[][] numbers5 = new int[5][];    // Jagged array, one dimension 5 long 
int[][] numbers6 = new int[5][4];    // Multidimensional array: 5x4 

詳細は、ArraysのOracleチュートリアルを参照してください。