2015-02-09 73 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