2016-04-19 3 views
0

私はレコードの配列を学習していて、問題を持って運動しています。しかし、私は、このエラー応答スレッド "main"の例外java.lang.NullPointerException - レコードのJava配列

)java.lang.NullPointerExceptionが

と、これは私のコード

import java.util.Scanner; 

public class Employees { 

public static Scanner sc = new Scanner(System.in); 
int n; 
int id, salary; 
String name, group; 

Employees[] employees = new Employees[100]; 

void initializing_array(){ 
    System.out.print("Number of Data: "); 
    n = sc.nextInt(); 

    if(n >= 0 && n <= 100){ 
     for(int i=0; i <= n; i++){ 
      System.out.print("ID: "); 
      employees[i].id = sc.nextInt(); 
      System.out.print("Name: "); 
      employees[i].name = sc.nextLine(); 
      System.out.print("Group: "); 
      employees[i].group = sc.nextLine(); 
      System.out.print("Salary: "); 
      employees[i].salary = sc.nextInt(); 


     } 
    }else{ 
     System.out.println("=========="); 
    } 
} 

void output_array(){ 
    for(int i=0; i < n; i++){ 
      System.out.println("ID: "+employees[i].id); 
      System.out.println("Name: "+employees[i].name); 
      System.out.println("Group: "+employees[i].group); 
      System.out.println("Salary: "+employees[i].salary); 

    } 
} 

public static void main(String[] args) { 
    Employees emp = new Employees(); 

    emp.initializing_array(); 
    emp.output_array(); 
} 

} 

ですが、エラーが(initializing_arrayにループしていたスレッドの例外 "メイン" を得ました私はいくつかのデータをタイプした。 ありがとうございます。

+0

例外を投稿するときは、スタックトレースを提供してください。 – KevinO

答えて

1

すべてのNullPointerExceptionは重複しています。これは、オブジェクトを初期化していないことを意味します。

このコードには2つの問題があります。 100のnははIndexOutOfBoundsExceptionがスローされますので、

  1. if(n >= 0 && n <= 100){は、間違っています。

  2. Employees[]配列は割り当てられますが、Employeeオブジェクトは作成されません。 (ループカウンタも間違っています)。

(注意:わからないコードの書式が機能しない理由)

for (int i = 0; i < n; ++i) { 
    employees[i] = new Employee(); //<-- ADD THIS LINE 
    System.out.print("ID: "); 
    employees[i].id = sc.nextInt(); 
    System.out.print("Name: "); 
    ... 
} 
関連する問題