0

コードを書いていますが、次のメッセージが表示され続けます。

Exception in thread "main" java.lang.NullPointerException
    at age.TokenizeNumbers.setYears(TokenizeNumbers.java:30)
    at age.AgeNo.main(AgeNo.java:18)

30行目の最初のものは私に苦労しています。array1[] (年) に array2[] (日付) の内容を入力しようとしていますが、array2[] に格納されている数値の最初の 2 桁のみが必要です。その単純な for() ループには何か問題があります。years=dates と書いている限り、それは問題なく array1[] (年) を返します。for ループを試みるとすぐに、エラーが発生します。これがコードです。ありがとうジュラジ

package age;

import java.io.IOException;

public class TokenizeNumbers {
        int lines;
        long[] dates;
        long[] years;
        long[] dateNum;
        long[] convertedYears;
        long annum = 100000000;

    public TokenizeNumbers() throws IOException{
        String[] dates;
        String[] years;

        Vek v = new Vek("C:\\Users\\Juraj\\workspace\\Mackin\\src\\age\\rc.txt");
        lines = v.readLines();
        long[] dateNum = v.openFile();

    }

    public long[] getDateArray(long[] dateNum){
        dates = dateNum;
        return dates;
    }

    public long[] setYears(){
        for(int k = 0; k<dates.length; k++){    
        years[k]=dates[k]/annum;
        }
        return years;
    }


    public void printYears(){
        int y;

        for(y=0; y<lines; y++){
            System.out.println(years[y]);

        }
        System.out.println();
    }
}
4

3 に答える 3

0

この行で:

years[k] = dates[k]/annum;

値を割り当てようとしていますが、提供されたコードで初期化されてyears[k]yearsません。あなたができる

long[] years = new long[SIZE];

についても同様ですdateNum

また、String配列がdatesありyears、コンストラクターにTokenizeNumbersは使用されていませんが、混乱を招く可能性があります。

配列のコピーについては、Arrays#copyOfを参照してください。

于 2013-03-26T17:16:00.340 に答える
0

問題はdates.lengthあなたのコードにあると思います:

public long[] setYears(){
     for(int k = 0; k<dates.length; k++){    
        years[k]=dates[k]/annum;
     }
     return years;
}

dates.length設定(初期化)する前に使用する必要があります。実行するdates.lengthと と表示されNPEますので、必ず初期化datesしてからご使用ください。

于 2013-03-26T17:16:37.477 に答える
0

日付[]と年[]

初期化されていないため、「 new 」キーワードで初期化する必要があります

于 2013-03-26T17:28:19.377 に答える