Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 搜索文本文件不确定性_Android_Search_Text - Fatal编程技术网

Android 搜索文本文件不确定性

Android 搜索文本文件不确定性,android,search,text,Android,Search,Text,朋友们,我有一段代码,可以读取文本文件并搜索匹配的单词,但在搜索文本文件时存在不确定性。有时它能够匹配单词,有时则无法匹配,尽管单词存在于文本文件中 代码如下: EditText et = (EditText) findViewById(R.id.editText1); String display = null; String search = "dadas"; //String current = "woot"; try { InputStr

朋友们,我有一段代码,可以读取文本文件并搜索匹配的单词,但在搜索文本文件时存在不确定性。有时它能够匹配单词,有时则无法匹配,尽管单词存在于文本文件中

代码如下:

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中会产生空值。

通过调用
br.readLine()
两次,看起来您正在跳过每隔一行

我会做这样的事

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

        if(line.toLowerCase().contains(search)){
            display = "found";
            break;
        }
    }

您正在调用
br.readLine()
两次,这意味着您将每隔一行跳过一次。在你的例子中,“爸爸”在第3行,这意味着它被跳过了

尝试:


使用调试器逐步完成循环并检查br.readLine()。当你期望匹配时,它会返回什么?@Simon是的,由于重复调用br.readLine(),它在while循环中每次都跳过一个条目。我想是的,但是有没有任何可能的方法来修复它?但是假设我们的是“战争”,那么它会显示为每个条目找到的,如仓库、战士等。@MachMitch fair。我把它改回你原来的比较。谢谢你,我希望我能从你那里得到更多关于我的项目的帮助,但是在外面stackoverflow@MachMitchStackOverflow是一个寻求帮助的好地方,还有很多其他人愿意帮助你。只需确保在提问前先搜索,用完整的代码友好地提问,如果答案适合你,请接受。
    String line = br.readLine();
    while(line != null){

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