我需要阅读一个文件并检查每个单词后面是否有某些“两个单词”,例如,John Smith 先生。所以,当我阅读文件时,我面对 Mr. 这个词,我应该检查 Mr. 后面的两个词,看看它们是否是“John Smith”,并计算发生了多少次。我写了以下程序
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream ("TestF.txt"));
String line=reader.readLine();
HashMap<String, Integer> wordCount = new HashMap<String, Integer>();
while(line!=null)
{
String[] tokens= line.split(" ");
for (int i=0; i<tokens.length; i++)
{
if tokens[i].equals("Mr.")
{
if(!(tokens[i+1].isEmpty()))
{
if (tokens[i+1].equlas("John")
String s= "John";
else
s= "Other Name";
}
else
s="";
if(!(tokens[i+2].isEmpty()))
{
if (tokens[i+1].equlas("Smith")
String s2= "Smith";
else
s2= "Other Name";
}
else
s2="";
if (s.equals("John")&&s2.equals("Smith"))
{
if (wordCount.containsKey(tokens[i]))
wordCount.put(tokens[i], wordCount.get(tokens[i]).intValue()+1);
else
wordCount.put(tokens[i], 1);
}
}
// Go to the next line
line=reader.readLine();
}
以下行有问题
if(!(tokens[i+1].isEmpty()))
if(!(tokens[i+2].isEmpty()))
实际上它说:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 26
是否因为文件中的最后一个单词后面没有两个单词而发生这种情况?如果我的猜测是正确的,我该如何纠正它,以便我可以在文件的最后一个单词中停下来。如果我的猜测是错误的,请告诉我原因。注意:这只是显示我的问题的示例