1

友人 私は、テキスト ファイルを読み取って一致する単語を検索するコードを持っていますが、テキスト ファイルの検索中に不確実性があります。テキスト ファイルに単語が存在するにもかかわらず、一致する場合と一致しない場合があります。

コードは次のとおりです。

EditText et = (EditText) findViewById(R.id.editText1);
    String display = null;
    String search = "dadas";
    //String current = "woot";

    try {
        InputStream is = getAssets().open("file.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(is));

        while(br.readLine() != null){

            if(search.equalsIgnoreCase(br.readLine())){
                display = "found";
                break;
            }

        }

        br.close();
        is.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    et.setText(display);

これが私のテキストファイルの内容です:

dadaist
dadaists
dadas
daddies
daddle
daddled
daddles
daddling

なぜこれが起こっているのか誰にもわかりますか?テキストファイルに「finish」という単語を追加して検索すると、常にそれが見つかります。しかし、私の検索語が「dadas」または「dadist」の場合、et で null が返されます。

4

2 に答える 2

1

2 回電話をかけているbr.readLine()ため、1 行おきにスキップすることになります。あなたの場合、「dadas」は 3 行目にあり、スキップされたことを意味します。

試す:

    String line = br.readLine();
    while(line != null){

        if(line.equalsIgnoreCase(search)){
            display = "found";
            break;
        }
        line = br.readLine();
    }
于 2013-03-28T23:02:23.227 に答える
1

br.readLine()2 回呼び出して、1 行おきにスキップしているようです

代わりにこのようなことをします

    search = search.toLowerCase();
    String line = null;
    while((line = reader.readLine()) != null){

        if(line.toLowerCase().contains(search)){
            display = "found";
            break;
        }
    }
于 2013-03-28T23:01:06.880 に答える