-2

私はJavaが初めてで、ネストされたクラス(CenterData)を含むクラス(CenterTable)を実装しています。囲んでいるクラス内で、CenterData 型の配列を作成したいと考えています。コードは以下のとおりです。

public class CenterTable {

public class CenterData {
        public int userId; 
        public double distance; 
        public double elevation; 
        public int point_00; 
        public int point_01; 
        public int point_10; 
        public int point_11; 

        public CenterData() {       
            userId = 0; 
            distance = 0; 
            elevation = 0; 
            point_00 = 0; 
            point_01 = 0; 
            point_10 = 0; 
            point_11 = 0; 
        }
    }   // end of CenterData class

public static CenterData[] centers = new CenterData[7064];  
public static double centerMaxDistance = 0; 
}

配列センターの要素にアクセスまたは設定しようとするたびに:

 CenterTable.centers[1].beam_user = 1; 
 System.out.println(CenterTable.centers[1].beam_user); 

エラーが表示されます: Exception in thread "main" java.lang.NullPointerException

クラスを独自のJavaクラスCenterDataから出し入れしてもCenterTable、そのような問題は発生しません。この時点でちょっと立ち往生しています。何かヒントやヒントがあれば、それは素晴らしいことです。

ありがとうございます!

4

3 に答える 3

2

NullPointerExceptionにアクセスしようとしているので取得していますが、今のところ参照しています。beam_usercenter[1]null

  • 配列が作成されると、すべての値がデフォルト値になります。
  • 参照型のデフォルト値はnull

最初にオブジェクトを作成する必要があります

CentreTable.centers[1] = new CentreData();

すべてのオブジェクトを作成するには、

for(int i = 0; i<= centers.length ; i++){

    centers[i] = new CenterData();
}

配列要素が実際のオブジェクトを参照した後、次のように実行できます

centers[1].beam_user = 1;    
于 2013-08-08T19:51:53.603 に答える
1

オブジェクトの配列を作成しましたCenterDataが、それは s を入力できるスロットの集まりにすぎませんCenterData。一度に (forループを使用して) または必要に応じて (必要に応じcenters[i] == nullて新しいものを作成するかどうかを確認して作成することにより)、実際にそれらを作成する必要があります。

于 2013-08-08T19:54:38.857 に答える
0
public static CenterData[] centers = new CenterData[7064];  

すべての要素が null です。CenterDataインスタンスを配列に入れる必要があります。

于 2013-08-08T19:54:25.990 に答える