0

テキストファイル内の単語を検索するこの方法がありますが、単語が存在する場合でも常に否定的な結果が返されますか??

public static void Option3Method(String dictionary) throws IOException
 { 
Scanner scan = new Scanner(new File(dictionary));
String s;
int indexfound=-1;
String words[] = new String[500];
String word1 = JOptionPane.showInputDialog("Enter a word to search for");
String word = word1.toLowerCase();
word = word.replaceAll(",", "");
word = word.replaceAll("\\.", "");
word = word.replaceAll("\\?", "");
word = word.replaceAll(" ", "");
while (scan.hasNextLine()) {
s = scan.nextLine();
indexfound = s.indexOf(word);
}
if (indexfound>-1)
{ 
JOptionPane.showMessageDialog(null, "Word found");
}
else 
{
JOptionPane.showMessageDialog(null, "Word not found");
 }
4

3 に答える 3

1

indexfoundこれは、ループ内の値を置き換えているためです。したがって、最後の行に単語が含まれていない場合、の最終値はindexfound-1 になります。

私はお勧めします:

public static void Option3Method(String dictionary) throws IOException {
    Scanner scan = new Scanner(new File(dictionary));
    String s;
    int indexfound = -1;
    String word1 = JOptionPane.showInputDialog("Enter a word to search for");
    String word = word1.toLowerCase();
    word = word.replaceAll(",", "");
    word = word.replaceAll("\\.", "");
    word = word.replaceAll("\\?", "");
    word = word.replaceAll(" ", "");
    while (scan.hasNextLine()) {
        s = scan.nextLine();
        indexfound = s.indexOf(word);
        if (indexfound > -1) {
            JOptionPane.showMessageDialog(null, "Word found");
            return;
        }
    }
    JOptionPane.showMessageDialog(null, "Word not found");
}
于 2013-04-09T10:03:03.077 に答える
0

indexfound = s.indexOf(word); ではなく、while ループで indexfound をインクリメントします。

与える

while (scan.hasNextLine()) 
   {
    s = scan.nextLine();
    if(s.indexOf(word)>-1)
        indexfound++; 

    }

indexfound 値を使用すると、ファイル内の出現回数を見つけることもできます。

于 2013-04-09T10:08:43.300 に答える
0

while単語が見つかった場合はループを解除します

while (scan.hasNextLine()) {
  s = scan.nextLine();
  indexfound = s.indexOf(word);
  if(indexFound > -1)
     break;
}

上記のコードの問題は、indexFound上書きされていることです。ファイルの最後の行に単語が存在する場合、コードは正常に機能します。

于 2013-04-09T10:04:26.967 に答える