2013-06-26 55 views
2

肯定是有一個線,但我不明白爲什麼不能掃描儀看到它..掃描儀 - 異常線程「main」 java.util.NoSuchElementException:沒有找到行

這裏是文件的開頭:

256 
<Y 1874> 
<A T. HARDY‡<T Madding Crowd(Peuœ‚978)」C i」P 51‡DESCRIPTION OF FMERÅAK -- AÄINCIºNT 

下面是我得到它的代碼:

File file = new File ("calgary/book1_enc"); 
Scanner first_line = new Scanner(file); 
int size_st; 
size_st = Integer.valueOf(first_line.nextLine()); 

但我得到的錯誤:

Exception in thread "main" java.util.NoSuchElementException: No line found 
    at java.util.Scanner.nextLine(Unknown Source) 
    at LZWDecoder.main(LZWDecoder.java:26) 

文件book1_enc是我的LZW編碼算法的輸出。當我傳遞文件到我的解碼器時,我想讓解碼器知道在這種情況下256字典的大小......感謝閱讀..

回答

2

問題在於輸入文件的編碼。使用other constructorScanner指定字符集:

Scanner first_line = new Scanner(file, "UTF-8"); 

在默認的字符使用其他構造結果集正在使用的通常不能正確讀取Unicode字符。

解決方法:

BufferedReader br = new BufferedReader(new FileReader("book1_enc.dat")); 
int sizeSt = Integer.parseInt(br.readLine()); 
+0

謝謝,但我仍然有相同的錯誤:( – Anarkie

+0

測試&在這裏工作。你可以嘗試保存文件,如在一個文本編輯器,如Eclipse或記事本++,讓你修改編碼 – Reimeus

+0

我打開文件notepad ++和第一3行就像我複製的,我從Notepad ++保存爲文本文件,仍然有相同的錯誤,我創建了一個文本文件,並粘貼在這個新的文本文件中的前3行,仍然有相同的錯誤,另一方面文本文件我保存爲,看起來不像在記事本+ +中沒有「\ n」所有文本都粘在一起,您是如何嘗試的?您能否詳細說明或者可能向我發送您嘗試的文件? – Anarkie

0

這意味着你的文件沒有下一行。在致電 nextLine之前,您應該始終檢查 hasNextLine()。你應該修改你的代碼是這樣

if (first_line.hasNextLine()){ 
    size_st = Integer.valueOf(first_line.nextLine()); 
} 

java.util.NoSuchElementException由Enumeration的 nextElement方法拋出,表明有枚舉中沒有更多的元素。

+3

我認爲你的意思'hasNextLine()'? –

+0

@VaibhavRaj我在問這個問題之前試過了你所說的,但是當我這麼做的時候,沒有任何一行被傳遞,但是我想得到第一行,並且我知道第一行我粘貼了我的文件的前三行你可以在問題中看到。 – Anarkie

相關問題