2015-02-09 41 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第二次调用将再次要求输入 – 2015-02-09 06:56:22

回答

3

你读while循环中的新线,即返回null:

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,将会很好。 :D – 2015-02-09 06:58:27

+1

@VivekSingh为什么? 'num'只在循环中使用。 – Jens 2015-02-09 07:01:03

+0

因此对于所有迭代,它将继续创建一个数据类型为double的变量num。从而增加时间和空间的复杂性(如果在较小的层次上看)。虽然它不会影响目的或产出。 – 2015-02-09 07:03:50