2017-04-23 13 views
0

私は、Javaに新たなんだ、と私はNullPointerExceptionエラー

は、名前を入力し、コンパイラでこのエラーを取得:ポット例外をスレッドで「メイン」 のjava.lang.NullPointerExceptionを アカウントで.BankTest.main(BankTest.java:17)C:¥Users¥Carl INVOKER¥AppData¥Local¥NetBeans¥Cache¥8.2¥executor-snippets¥run.xml:53: Javaが返されました:1 BUILD FAILED(total時間:7秒)

Cla SSアカウント

package account; 

public class Account { 
    private String name; 
    private String surname; 
    private int age; 
    private int sex; 

    public Account(String name, String surname, int age, int sex) { 
     this.name = name; 
     this.surname = surname; 
     this.age = age; 
     this.sex = sex; 
    } 

    public Account() { 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 

    } 

    public String getSurname() { 
     return surname; 
    } 

    public void setSurname(String surname) { 
     this.surname = surname; 

    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public int getSex() { 
     return sex; 
    } 

    public void setSex(int sex) { 
     this.sex = sex; 
    } 
} 

クラスBankTest

package account; 

import java.util.Scanner; 

public class BankTest { 

    public static void main(String args[]) { 
     Scanner scan = new Scanner(System.in); 

     Account user[] = new Account[10]; 

     System.out.println("Enter name : "); 
     user[1].setName(scan.nextLine()); 

     System.out.println(user[1].getName()); 
    } 
} 
+0

このスレッドはまだ解決されていませんか?解決済みの問題をマークしておけば、他のユーザーや自分にとっては助けになります。より良い解決策を見つけた場合は、コミュニティと共有してください。 – EyuelDK

+0

私はオブジェクト配列を使わなかった、私はArrayListsを使う。あなたの提案したコードは機能しませんでした。 –

+0

これは、ArrayListではなく、オブジェクトの配列 'Account user [] = new Account [10];です。 ArrayListは次のようなものになります 'List user = new ArrayList (); – EyuelDK

答えて

0

あなたの配列は、その中に値がありません。 Account user[] = new Account[10];は配列を作成するだけですが、配列内の要素は初期化しません。したがって、このステートメントuser[1].setName(scan.nextLine());を実行すると、user[1]はAccountオブジェクトを参照しませんが、実際にはnullの値を参照します。したがって、メソッドsetNameを呼び出すと、NullPointerExceptionがスローされます。アカウント配列を初期化するには、アクセスする前にこのような操作を行う必要があります。

for (int i=0: i<user.length; i++) { 
    user[i] = new Account(null, null, 0, 0); 
} 
関連する問題