我正在尝试使用 Java 中的 Scanner 读取文本文件并生成按字母顺序排列的词汇列表。
我在 Eclipse 中收到的一个错误指出我必须返回 String 类型的列表。我有点理解为什么会发生该错误,但不确定如何修复它。
谁能帮我解释一下我哪里错了?
这是我当前的代码:
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"));
}
最佳答案
如果读取时抛出异常,
返回词汇
可能无法到达。
在这种情况下,该方法没有任何可返回的内容,
所以你需要添加一个return
语句。
例如,您可以将 vocab
的声明和初始化移到 try-catch
之外,并在该语句的末尾添加 return vocab
方法。
或者,您可以返回一个空列表return Collections.emptyList()
。
顺便说一句,您正在捕获 IOException
,但是 FileNotFoundException
就足够了,而且更合适。
关于java - 如何使用 Scanner 读取文本文件并生成按字母顺序排列的词汇列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33466981/