BufferedReader中的NullPointerException

时间:2013-11-30 19:33:35

标签: java nullpointerexception bufferedreader

我正在尝试使用BufferedReader将.txt文件中的字符串导入Arraylist,然后使用随机方法随机选择Arraylist内的字符串。

但每当我运行此代码时,它都会给我一个java.lang.NullPointerException

我该怎么做才能解决这个问题?提前谢谢。

java.lang.NullPointerException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

有问题的.txt文件由几行单词组成。

import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Random;

public class WordList{

    private static ArrayList<String> words =new ArrayList<String>();


    public void main(String[] args) throws IOException {
        ArrayListCon("Majors.txt");
        System.out.println(words);
    }

    private void ArrayListCon(String filename) throws IOException{
        String line;
        BufferedReader br = null; 
                 br = new BufferedReader(new FileReader(filename));

        while (( line = br.readLine()) != null){
            words.add(line);      
        }
        br.close();
    }

    public static String getRandomWord(){
        Random r = new Random();
        String randomWord = words.get(r.nextInt(words.size()));
        return randomWord;
    }
}

2 个答案:

答案 0 :(得分:1)

进行以下更改后,您的代码对我来说非常合适,而且我从未看到空指针异常错误。

1)我首先使方法main为static,因为我收到的错误是找不到主方法:

public static void main(String[] args) throws IOException {

2)我还将ArrayListCon方法设为静态

private static void ArrayListCon(String filename) throws IOException{

3)我制作了一个名为Majors.txt的文件,内容为:

hello
hi
there
my
words
are
cool

4)最后,我刚编译并运行程序,输出如下:

javac WordList.java
java WordList
[hello, hi, there, my, words, are, cool]

我认为问题出现在您运行代码(edu.rice.cs.drjava.model.compiler.JavacCompiler)

的方式上

答案 1 :(得分:1)

由于代码和DrJava代码中的错误而导致异常。

在您的代码中,您需要将main方法设为静态。

在DrJava代码中,他们需要在JavacCompiler.runCommand方法中添加Modifier.isStatic(m.getModifiers())的检查。