2012-03-07 3 views
1
import java.io.*; 

public class workPoS { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     dataList[] some_list = new dataList[10]; 

     for (int x = 0; x < some_list.length; x++) { 
      some_list[x].firstName = "John"; 
      some_list[x].middleName = "Jacob"; 
      some_list[x].lastName = "Jingle-Heimer-Schmidt"; 
      some_list[x].age = 101; 
     } 

     for (int x = 0; x < some_list.length; x++) { 
      System.out.println(some_list[x].firstName + " " 
        + some_list[x].middleName + " " + some_list[x].lastName 
        + " Age: " + some_list[x].age); 
     } 

    } 

    public class dataList { 
     String firstName, middleName, lastName; 
     int age; 

     public dataList() { 
      firstName = ""; 
      middleName = ""; 
      lastName = ""; 
      age = 0; 
     } 
    } 

} 

ERROR:スレッドの例外カスタムクラスから配列を作成しますか?

これはライン12 workPoS.mainでjava.lang.NullPointerExceptionが (workPoS.java:12) "メイン" である:

some_list[x].firstName = "John"; 

に思えますsome_list [x]にアクセスできますが、some_list [x] .firstNameというコンストラクタを指定すると、結果はnull値になります。

私は単にコンストラクタの値を間違って参照していますか? もしそうなら、正しい方法は何ですか?

ありがとうございました!

+0

はアンドロイド正確なタグですか? Androidアプリケーションの入口ポイントは、デスクトップアプリケーションの場合のように 'main'ではありません。 –

答えて

0

あなたは同じ.javaファイル内のクラスの両方を使用している場合は、このコードを試してください

import java.io.*;

public class workPoS {

public workPoS() { 
    super(); 

}

/** * @param args */ public static void main(String[] args) { workPoS wp = new workPoS(); dataList[] some_list = new dataList[10];

for (int x = 0; x < some_list.length; x++) { 
     some_list[x] = wp.new dataList(); 
     some_list[x].firstName = "John"; 
     some_list[x].middleName = "Jacob"; 
     some_list[x].lastName = "Jingle-Heimer-Schmidt"; 
     some_list[x].age = 101; 
    } 

    for (int x = 0; x < some_list.length; x++) { 
     System.out.println(some_list[x].firstName + " " 
       + some_list[x].middleName + " " + some_list[x].lastName 
       + " Age: " + some_list[x].age); 
    } 

} 

public class dataList { 
    String firstName, middleName, lastName; 
    int age; 

    public dataList() { 
     firstName = ""; 
     middleName = ""; 
     lastName = ""; 
     age = 0; 
    } 
} 

}

+0

恐ろしい!私が完全なばかだと仮定するのではなく、実際に問題を解決する時間を取ってくれてありがとう。 – mrcampos

7

はここを見て:

dataList[] some_list = new dataList[10]; 

for (int x = 0; x < some_list.length; x++) { 
    some_list[x].firstName = "John"; 

をあなたは、配列を作成しました - しかし、すべての要素がnull参照になります。あなたは "コンストラクタ値を間違って参照する"ことについて話します。を呼び出すのではなく、コンストラクタを呼び出すことは全くありません。あなたは持っている必要があります。

for (int x = 0; x < some_list.length; x++) { 
    some_list[x] = new dataList(); 
    some_list[x].firstName = "John"; 

詳細についてはJava Tutorial for Arraysを参照してください。

(あなたはまた、Javaの命名規則に従うためにあなたの名前を修正し、あなたのフィールドはプライベートにするが、それは別の問題だ必要があります...)

関連する問題