如何使用Scanner读取文本文件并生成按字母顺序排列的词汇表列表

时间:2015-11-01 20:43:45

标签: java file-io input

我正在尝试使用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"));
}

1 个答案:

答案 0 :(得分:2)

如果在阅读时抛出异常, 可能无法联系到return vocab。 在这种情况下,该方法没有任何回报, 所以你需要添加一个return语句。

例如,您可以在vocab之外移动try-catch的声明和初始化,并在方法的末尾添加return vocab。 或者,您可以返回一个空列表return Collections.emptyList()

顺便说一下,你抓住了IOException,但FileNotFoundException就足够了,而且更合适。