我在阅读文件然后将其内容放入数组时遇到了麻烦。控制台说我的错误在这里:
Exception in thread "main" java.lang.NullPointerException
at readFile.readFile(readFile.java:23)
at apples.main(apples.java:6)
但我现在不知道如何解决它。
import java.util.*;
import java.lang.*;
import java.io.*;
public class readFile {
private Scanner x;
public void openfile(){
try{
x = new Scanner( new File("/Users/Zachary/Desktop/chinese.txt"));
}
catch (IOException e){
System.out.println("you failed foo");
}
}
public void readFile(){
int y = 0;
int[] nums = null;
while(x.hasNext()){
for(y=0; y<10;y++) {
nums[y] = x.nextInt();
}
System.out.println(nums[y]);
}
}
public void closeFile(){
x.close();
}
}
public class apples {
public static void main (String[]args){
readFile r = new readFile();
r.openfile();
r.readFile();
r.closeFile();
}
}
答案 0 :(得分:2)
您似乎有NullPointerException
at:
nums[y] = x.nextInt();
这是因为这一行:
int[] nums = null;
它是null,所以你不能把东西放进去。这是一个简单的解决方法:
int[] nums = new int[10];
上面的代码将初始化nums
,以便它是一个空的(不是真的 - 它实际上填充了0)这样的数组:
---------------------
|0|0|0|0|0|0|0|0|0|0|
---------------------
如果您希望能够根据需要添加任意数量的数字,则需要ArrayList
(link)。
此外,此代码将引发错误:
for(y=0; y<10;y++) {
nums[y] = x.nextInt();
}
System.out.println(nums[y]);
这是因为您的System.out.println
不知道y
是什么。只需将System.out.println
移到for
循环中,即可“看到”y
。 (这称为范围)
答案 1 :(得分:0)
编译器错误表明错误发生在“readFile.java:23”。这是文件readFile.java的第23行。我相信这就是这条线:
nums[y] = x.nextInt();
问题在于您将nums
声明为:
int[] nums = null;
当您尝试访问初始化为null
的数组时,您不应对获得NullPointerException
感到惊讶。
要解决此问题,您需要创建一个数组对象:
int[] nums = new int[SOME_SIZE];
您需要自己提供尺码,因为您没有提供足够的信息来猜测价值。
答案 2 :(得分:0)
内循环真的有必要吗?你循环x * 10次,这实际上不是分配数据的好方法。