2013-04-26 62 views
-3

我有一個帶有分隔符的文本文件,如下所示。我試圖通過1textfile分隔java nosuchelement異常

13年1月6日檢索元件1:下午4:00

3:2

6:3

我正在一個沒有這樣的當下面的代碼被激活時,來自程序的元素異常。

BufferedReader br = new BufferedReader(new FileReader("BookingMade.txt"));  

if (br.readLine() != null) { 

Scanner s = new Scanner(br).useDelimiter(":"); 
System.out.println(s.next()); 
System.out.println(s.next()); 
System.out.println(s.next()); 
System.out.println(s.next()); 
System.out.println(s.next()); 
System.out.println(s.next()); 
} 
    br.close(); 

輸出變爲

+3

而你的問題是什麼? – Barranka 2013-04-26 16:49:23

+0

嗨。我試圖找出爲什麼我得到異常錯誤。 – user1823986 2013-04-26 17:02:59

回答

5

你的問題還不清楚,但這裏有一個問題:在這行你跳過該文件的第一行:

if (br.readLine() != null) { 

在此之後只有4個標記可用,但是你試圖閱讀6,因此拋出了NoSuchElementException

你可以檢查使用hasNext可用令牌:

Scanner s = new Scanner(new File("BookingMade.txt")).useDelimiter(":"); 
while (s.hasNext()) { 
    System.out.println(s.next()); 
} 
+0

對不清楚的問題抱歉。我寫了一個更清晰的版本問題,但無法發佈,我重寫了它。 – user1823986 2013-04-26 17:05:29

+0

嗨,對於br.readline,即時嘗試檢查文件是否爲空。我試圖檢索元素1 1,因爲我試圖與元素一起打印一些句子。這就是爲什麼我沒有使用while循環。 – user1823986 2013-04-26 17:44:25

+0

對不起,我不知道我的br.readline跳過了第一行。你有任何解決方案來檢查文本文件是否爲空,因爲我搜索了很長時間,但我只能找到檢查空文本文件的解決方案。 – user1823986 2013-04-26 17:50:08

3

由於在解析BookingMade.txt時不再發現分隔符,因此出現錯誤。

NoSuchElementException異常

由Enumeration nextElement方法拋出以指示存在枚舉中沒有更多的元素。

enter image description here

+0

非常感謝。該圖像有助於我理解我的錯誤。 – user1823986 2013-04-26 17:45:15