2014-10-11 176 views
-1

我無法從文本文件閱讀,我不斷收到錯誤的「Java空指針異常」的Java空指針異常

我讀文件類是

public class readfile { 
    private Scanner x; 

public void openfile() { 
    try { 
     x = new Scanner(new File("test2.txt")); 
    } 
    catch(Exception e) { 
     System.out.println("error"); 
    } 
} 

public void readfile() { 
    while(x.hasNext()) { 
     String a = x.next(); 
     String b = x.next(); 
     String c = x.next(); 

     System.out.printf("%s %s %s",a,b,c); 
    } 
} 

和我的主類調用這些方法是

public class InputOut { 

public static void main(String[] args) { 
    readfile r = new readfile(); 
    r.openfile(); 
    r.readfile(); 
    r.closeFile(); 
    } 

} 

我得到的錯誤,當我調用ReadFile的例外,所以我認爲我可能無法正確打開它?我將該文件保存在程序運行的目錄中,並且具有以下格式:

50 issac billy 
432 bryan darren 
443 rob zombie 

我是否錯過了在此處閱讀文件的內容。我導入了java.io *;類和java.util類。錯誤發生在public void readfile()

+4

你還沒有向我們展示哪條線會拋出NPE,這是關鍵。不,這不僅僅是關鍵,而是超級關鍵。請解決這個問題。 – 2014-10-11 19:48:01

+3

將您的整個異常(包括完整堆棧跟蹤)添加到您的帖子中。 – 2014-10-11 19:48:54

+0

此外,根據這個問題最常見的原因,你經常在錯誤的地方查找你的文件。請在這個網站上搜索類似的問題,看看它是如何完成的,因爲經常詢問**。 – 2014-10-11 19:49:18

回答

3

只是快速猜測...您的代碼是

while(x.hasNext()) { 
    String a = x.next(); 
    String b = x.next(); 
    String c = x.next(); 

因此要檢查是否一個元素存在(通過hasNext())。檢查總是一個很好的理念。但是,你應該只讀下一個元素(通過next()),而不是進一步檢查。

+0

+1這是一個很不錯的猜測。 – 2014-10-11 19:55:28