肯定有一条线,但我不明白为什么扫描仪看不到它..
这是文件的开头:
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 ...感谢阅读......
答案 0 :(得分:2)
问题在于输入文件的编码。使用指定字符集的Scanner
other constructor:
Scanner first_line = new Scanner(file, "UTF-8");
使用其他构造函数会导致使用默认字符集,这通常无法正确读取unicode字符。
解决方法:
BufferedReader br = new BufferedReader(new FileReader("book1_enc.dat"));
int sizeSt = Integer.parseInt(br.readLine());
答案 1 :(得分:0)
这意味着您的文件没有下一行。在调用 nextLine 之前,您应该始终检查 hasNextLine()。您应该像这样修改您的代码
if (first_line.hasNextLine()){
size_st = Integer.valueOf(first_line.nextLine());
}
java.util.NoSuchElementException 由枚举的 nextElement 方法抛出,表示枚举中没有更多元素。