与えられたリスト(アルファベット順)で単語を検索するプログラムがあります。つまり、「abc」、「def」、「abcd」の順に入れます。
「abc」を検索します-印刷します。文字列トークナイザーは「abc」の後のトークンから「def」を検索し続けるので、明らかに「def」が見つかります。問題は、「abcd」を3番目に見つけて、トークナイザーが続行する「def」の後のリストに「abcd」が存在しないことです。
文字列トークナイザーのnextToken()関数をリセットするにはどうすればよいですか?むしろ、すべての比較のために、トークナイザー関数がファイルの最初から読み取るようにするにはどうすればよいですか?
[編集]
ファイルを開いたり閉じたりするだけでよいことはわかっています。文字列トークナイザーだけでそれを行う方法があるかどうか知りたいのですが。私はかなりググった。これまでのところ結果はありません。
[CODE] これは、トークナイザーとその別の関数内のコードであり、呼び出され、毎回新しい文字列が渡されます。
while(sTok.hasMoreTokens()&&f!=0)
{
String m=sTok.nextToken();
//System.out.println(m);
match=false;
if(input.length()==m.length())
{
//System.out.println(input+" is being compared to "+m);
for(int i=0;i<m.length();i++)
{
for(int z=0;z<m.length();z++)
{
//System.out.println("char in m="+m.charAt(i)+" char in input="+a[z]);
if(m.charAt(i)==a[z])
{
match=true;
z=m.length();
}
else
match=false;
}
if(match==false)
i=m.length();
}
}
if(match==true)
{
//System.out.println(m);
toWrite=toWrite+m+",";
fr.close();
return;
}
}