我正在尝试使用Java中的Scanner读取文本文件并生成按字母顺序排列的词汇表列表。
我在Eclipse中收到的一个错误声明我必须返回一个String类型的List。我有点理解为什么会出现错误,但不确定如何修复错误。
任何人都可以向我解释我的错误吗?
这是我目前的代码:
public List<String> buildVocabulary(String fileName) {
Scanner scanner = null;
try {
List<String> vocab = new ArrayList<String>();
scanner = new Scanner(new FileReader(fileName));
scanner.useDelimiter("[.,;']+");
while(scanner.hasNext()) {
vocab.add(scanner.next());
}
return vocab;
}
catch (IOException e) {
fail("Got an exception");
}
finally {
if(scanner != null) {
scanner.close();
}
}
}
测试我试图通过:
@Test
public void testVocabulary() {
List<String> vocab = builder.buildVocabulary("text.txt");
assertTrue(vocab.size() == 256);
assertTrue( vocab.get(0).equals("a"));
assertTrue( vocab.get(255).equals("younger"));
}
答案 0 :(得分:2)
如果在阅读时抛出异常,
可能无法联系到return vocab
。
在这种情况下,该方法没有任何回报,
所以你需要添加一个return
语句。
例如,您可以在vocab
之外移动try-catch
的声明和初始化,并在方法的末尾添加return vocab
。
或者,您可以返回一个空列表return Collections.emptyList()
。
顺便说一下,你抓住了IOException
,但FileNotFoundException
就足够了,而且更合适。