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

标签 java file-io input

我正在尝试使用 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/

相关文章:

java - 尝试填充 float 组时出现 ArrayStoreException

java - 如何使用 RabbitMQ JMS 客户端从现有的 JMS 应用程序连接到 RabbitMQ?

java - 使用 getRuntime().exec() 复制文件

MATLAB 尝试捕捉问题

c - 阵列扫描两次?

接收一个字母并将该字母向右旋转 13 位的 Python 函数

java - 为什么我需要显式地进行通用调用?

java - IntelliJ IDEA 突然失去了所有的类关系。无法解析符号

python - 在Python中查找扩展名为.txt的目录中的所有文件

Python——读取文件并确定最低分数和人