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