2015-11-01 100 views
1

我正在尝试阅读文本文件并使用Java中的扫描程序生成按字母顺序排列的单词列表。如何阅读文本文件并使用扫描仪生成按字母顺序排列的单词列表

我在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")); 
} 

回答

2

如果读取异常得到投掷, 的return vocab可能无法得到达到。 在这种情况下,该方法没有任何回报,因此您需要添加return语句。

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

顺便说一下,你在捕捉IOException,但FileNotFoundException就够了,更合适。