nullポインタアクセス:変数arrayLocationsのみ、この場所でnullにすることができ

クリス・ケリ:

だから私は、ファイルを読み込み、それから部品を取得しようとしているが、私はラインで上記のエラーを取得しておきます

arrayLocations [I] =新しいロケーション(Double.parseDouble(xArray [1])、Double.parseDouble(xArray [2]))

    int total;
    BufferedReader bfr;
    String lineObtained = null;
    Location[] arrayLocations = null;

    try {

        bfr = Files.newBufferedReader(path);
        lineObtained = bfr.readLine();

    } catch (IOException e) {

        e.printStackTrace();
        return null;
    }

    String split = lineObtained.split("POSTAL_OFFICE")[1];
    String[] y = split.split(" ");
    double xCoord = Double.parseDouble(y[0].trim());
    double yCoord = Double.parseDouble(y[1].trim());
    Location postOffice = new Location(xCoord, yCoord);

    String split1 = lineObtained.split("WORKER_ADDRESS")[1];
    String[] y1 = split.split(" ");
    double xCoord1 = Double.parseDouble(y1[0].trim());
    double yCoord1 = Double.parseDouble(y1[1].trim());
    Location home = new Location(xCoord, yCoord);        

    split = lineObtained.split("POSTAL_ADDRESSES")[1].trim();
    String[] splits = split.split("\\r?\\n");

    for(int i = 0; i < splits.length; i++) {
        String[] xArray = splits[i].split(" ");
        arrayLocations[i] = new Location(Double.parseDouble(xArray[1]), Double.parseDouble(xArray[2]));
    }

    PWPInstance instance = new PWPInstance(total, arrayLocations, postOffice, home, random);
    return instance;
フェデリコクレズCulloca:

あなたは、宣言arrayLocationとしてnull、それを初期化することはありません。

あなたは、おそらくのような何かをしたいです

Location[] arrayLocations = new Location[splits.length];

ただ、ループの前にそれはあなたがそれを使用する最初の場所とあなたが配列にする必要がどのように大きな知っている場所なので、(それが必要だときにそれを宣言し、メソッドの開始時にそれを宣言する必要はありません)。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=401008&siteId=1