ファイルを読み取って、各単語の後に特定の「2 つの単語」が続くかどうかを確認する必要があります。たとえば、Mr. John Smith です。そのため、ファイルを読んで Mr. という単語に直面しているときに、Mr. の後の 2 つの単語をチェックして、それらが "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
これは、ファイルの最後の単語の後に 2 つの単語がないために発生しますか? 私の推測が正しければ、ファイルの最後の単語で停止できるようにするにはどうすれば修正できますか。私の推測が間違っている場合は、その理由を教えてください。注:これは私の問題を示す単なる例です