我正在编写代码,并且会弹出以下消息:
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();
}
}
答案 0 :(得分:0)
在这一行:
years[k] = dates[k]/annum;
您正在尝试将值分配给years[k]
,但years
未在提供的代码中初始化。你可以做到
long[] years = new long[SIZE];
同样适用于dateNum
。
此外,String
的构造函数中包含dates
数组years
和TokenizeNumbers
,但未使用可能会导致混淆。
请查看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”关键字
对其进行初始化