Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用扫描仪读取文本文件并生成按字母顺序排列的词汇表_Java_File Io_Input - Fatal编程技术网

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

Java 如何使用扫描仪读取文本文件并生成按字母顺序排列的词汇表,java,file-io,input,Java,File Io,Input,我正在尝试读取一个文本文件,并使用Java中的Scanner生成一个按字母顺序排列的词汇表 我在Eclipse中收到的一个错误是,我必须返回一个字符串类型的列表。我有点理解为什么会发生这种错误,但不确定如何修复它 谁能解释一下我哪里错了吗 这是我当前的代码: public List<String> buildVocabulary(String fileName) { Scanner scanner = null; try { List<Strin

我正在尝试读取一个文本文件,并使用Java中的Scanner生成一个按字母顺序排列的词汇表

我在Eclipse中收到的一个错误是,我必须返回一个字符串类型的列表。我有点理解为什么会发生这种错误,但不确定如何修复它

谁能解释一下我哪里错了吗

这是我当前的代码:

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();
        }
    }
}
公共列表构建词汇表(字符串文件名){
扫描器=空;
试一试{
List vocab=new ArrayList();
scanner=newscanner(newfilereader(fileName));
scanner.useDelimiter(“[,;”]+”);
while(scanner.hasNext()){
添加(scanner.next());
}
返回vocab;
} 
捕获(IOE异常){
失败(“得到一个例外”);
}
最后{
如果(扫描器!=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"));
}
@测试
公共词汇表(){
List vocab=builder.build词汇表(“text.txt”);
assertTrue(vocab.size()=256);
assertTrue(vocab.get(0.equals)(“a”);
assertTrue(vocab.get(255).equals(“younger”);
}

如果读取时引发异常, 可能无法访问
返回语音b
。 在这种情况下,该方法没有要返回的内容, 因此,您需要添加一个
return
语句

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

顺便说一句,您正在捕获
IOException
,但是
FileNotFoundException
就足够了,而且更合适