2015-02-09 1 views
0

Итак, я пытаюсь написать цикл с BufferedReader, который читает следующие строки, преобразует эту строку в двойную и затем добавляет ее к сумме. Это должно продолжаться до конца файла.Продолжайте получать это исключение С readLine()

По какой-то причине, я получаю эту ошибку,

Exception in thread "main" java.lang.NullPointerException 
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1017) 
    at java.lang.Double.parseDouble(Double.java:540) 

Вот что у меня есть для кода:

while(bReader.readLine() != null) 
     { 
     line = bReader.readLine(); 
     double num = Double.parseDouble(line); 
     sum = sum + num; 
     count++; 
     } 
+0

readline второй звонок снова попросит ввести –

ответ

3

Вы читали новую строку внутри вашего цикла в то время, что возвращает нуль:

while(bReader.readLine() != null) 
     { 
     line = bReader.readLine(); // read a second line 
     double num = Double.parseDouble(line); 
     sum = sum + num; 
     count++; 
     } 

изменение:

while((line = bReader.readLine()) != null) 
     { 
     double num = Double.parseDouble(line); 
     sum = sum + num; 
     count++; 
     } 
+0

, и это будет хорошо, если вы объявите num out loop. : D –

+1

@VivekSingh Почему? 'num' используется только внутри цикла. – Jens

+0

поэтому для всех итераций он будет продолжать создавать переменную num с двойным двойным типом данных. тем самым увеличивая сложность времени и пространства (если они видны на небольших уровнях). Хотя это не повлияет на цель или выход. –