【问题标题】:filling array from another array从另一个数组填充数组
【发布时间】:2013-03-16 14:45:41
【问题描述】:

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

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() 循环有问题。只要我写 years=dates 它返回 array1[] (years) 就好了。一旦我尝试循环,我就会收到一个错误。 这是代码。谢谢 朱拉吉

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

【问题讨论】:

  • 您的代码中没有任何地方显示您的 years 数组正在初始化。您的代码还有多个其他问题。

标签: java arrays nullpointerexception


【解决方案1】:

我认为问题在于您的代码中的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】:

    日期[] 和年份[]

    没有初始化,需要用“new”关键字初始化

    【讨论】:

      【解决方案3】:

      在这一行:

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

      您正在尝试为years[k] 赋值,但years 未在提供的代码中初始化。你可以这样做

      long[] years = new long[SIZE];
      

      这同样适用于dateNum

      您的TokenizeNumbers 的构造函数中还有String 数组datesyears,尽管不使用可能会导致混淆。

      查看Arrays#copyOf 以了解复制数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多