读取文件并放入数组

时间:2013-01-25 02:12:13

标签: java arrays loops file-io

我在阅读文件然后将其内容放入数组时遇到了麻烦。控制台说我的错误在这里:

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

}
}

3 个答案:

答案 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次,这实际上不是分配数据的好方法。