从另一个数组填充数组

时间:2013-03-26 17:10:06

标签: java arrays nullpointerexception

我正在编写代码,并且会弹出以下消息:

Exception in thread "main" java.lang.NullPointerException
    at age.TokenizeNumbers.setYears(TokenizeNumbers.java:30)
    at age.AgeNo.main(AgeNo.java:18)
第30行的第一个让我很难过。我正在尝试用array2 [](日期)的内容填充array1 [](年),我只想要存储在array2 []中的数字的前两位数字。这个简单的for()循环有问题。只要我写 年=它返回array1 [](年)的日期就好了。一旦我尝试循环,我得到一个错误。 这是代码。谢谢 尤拉伊

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();
    }
}

3 个答案:

答案 0 :(得分:0)

在这一行:

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

您正在尝试将值分配给years[k],但years未在提供的代码中初始化。你可以做到

long[] years = new long[SIZE];

同样适用于dateNum

此外,String的构造函数中包含dates数组yearsTokenizeNumbers,但未使用可能会导致混淆。

请查看Arrays#copyOf复制数组。

答案 1 :(得分: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

答案 2 :(得分:0)

日期[]和年份[]

未初始化,您需要使用“new”关键字

对其进行初始化