我正在尝试使用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;
}
}
答案 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())
的检查。