2014-11-11 4 views
0

Я создал конструктор, который принимает имя файла .txt и печатает данные в нем как ArrayList.NullPointerException при чтении текстового файла

public class rrr { 

    private String filename; 

    public rrr(String afilename){ 
    afilename=filename; 
    } 
    public void readdtata() throws IOException { 
    FileReader p1=new FileReader(filename); 
    BufferedReader p2=new BufferedReader(p1); 
    ArrayList<String> data=new ArrayList<String>(); 
    String line; 

    while((line=p2.readLine()) != null){ 
    data.add(line); 
    } 

    p2.close(); 

    for(int i=0;i<data.size();i++){ 
    System.out.println(data.get(i)); 
    } 
    } 
} 

при попытке проверить это я получаю эти ошибки Исключение в потоке «главный» java.lang.NullPointerException

at java.io.FileInputStream.<init>(FileInputStream.java:116) 

at java.io.FileInputStream.<init>(FileInputStream.java:79) 

at java.io.FileReader.<init>(FileReader.java:41) 

at rrr.readdtata(rrr.java:14) 

at testin.main(testin.java:17) 

кто-нибудь есть идея о том, как решить эту проблему, пожалуйста.

+0

Вам нужно будет узнать общие понятия о том, как отладить NPE (NullPointerException). ** Вы должны критически прочитать стек стека исключения, чтобы найти строку с кодом в вине, строку, которая выдает исключение, а затем тщательно проверить эту строку **, узнать, какая переменная имеет значение null, а затем вернуться в свой код, чтобы увидеть Зачем. Поверьте мне, вы столкнетесь с ними снова и снова. –

+0

Обратите внимание, что название вопроса неверно, поскольку вы фактически не делаете чтение файла ни в одном конструкторе. –

ответ

3

В конструкторе я считаю, что это должно быть:

public rrr(String afilename){ 
    this.filename = afilename; 
} 
+0

Вы забыли «это». Я отредактировал ваш ответ, чтобы предоставить его. Но хороший выбор - его конструктор не правильно устанавливал поле класса. 1+ –

+0

да это сработало спасибо. – Alex12345

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