0

与えられたリスト(アルファベット順)で単語を検索するプログラムがあります。つまり、「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;
            }
        }
4

1 に答える 1

0

ApacheCommonsLangorg.apache.commons.lang.text.StrTokenizerクラスが役立つ場合があります。これは、前のトークンを取得するメソッドと、いくつかの異なるreset()メソッドを提供します。

StrTokenizer reset() // Resets this tokenizer, forgetting all parsing and iteration already completed.
StrTokenizer reset(char[] input) // Reset this tokenizer, giving it a new input string to parse.
StrTokenizer reset(String input) // Reset this tokenizer, giving it a new input string to parse.
于 2012-12-08T05:17:26.780 に答える