2013-11-30 2 views
0

Я пытаюсь использовать BufferedReader для импорта строк из. TXT-файла в Arraylist, а затем используя случайный метод случайного выбора строки внутри Arraylist.NullPointerException в BufferedReader

Но всякий раз, когда я запускаю этот код, он дает мне 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; 
    } 
} 
+1

Исключение, которое вы опубликовали, не имеет ничего общего с кодом, который вы опубликовали. Он вызывается edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand, который не используется в вашем коде. –

+0

Ummm, у вас уже есть эта же проблема две недели назад. Вау. http://stackoverflow.com/questions/20013557/nullpointerexception-object-and-arrays – rees

ответ

1

После внесения следующих изменений ваш код работал отлично для меня, и я никогда не видел ошибку исключения нулевого указателя.

1) я впервые сделал метод главным статическим, поскольку я получаю сообщение об ошибке, что не было основной метода найден:

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) Наконец, я просто с ompiled и запустил программу, со следующим выходом:

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

Я считаю, что вопрос идет с тем, как вы запустить код (edu.rice.cs.drjava.model.compiler.JavacCompiler)

+1

Да, это дубликат другого вопроса, который был о том же исключении. Университет Райса должен исправить свой код! –

+0

Да, главный бегун DrJava предполагает, что основной метод статический, а не проверка его статичности. Затем он вызывает метод рефлексивно, передавая «null» для целевого экземпляра. Но так как основной метод здесь не статичен, то передача в нуле вызывает исключение нулевого указателя. – rees

+0

спасибо Bucco! он работает сейчас! – user2826974

1

Исключения, возникающее в результате ошибки в обеих ваших кода и кода DrJava.

В вашем коде необходимо сделать основной метод статическим.

В коде DrJava им необходимо добавить проверку для Modifier.isStatic(m.getModifiers()) в метод JavacCompiler.runCommand.

Смежные вопросы