Java 比较.txt文件和editText之间的值

Java 比较.txt文件和editText之间的值,java,android,Java,Android,我正在尝试为我的应用程序创建一个黑名单,因此用户通过editText输入的blacklist.txt文件中的任何单词都将被标记出来。我下面的代码没有做任何事情,我不知道为什么 private String comparevalue() { BufferedReader buffered = null; String val = editbox.getText().toString(); InputStream inputStream =getReso

我正在尝试为我的应用程序创建一个黑名单,因此用户通过editText输入的blacklist.txt文件中的任何单词都将被标记出来。我下面的代码没有做任何事情,我不知道为什么

private  String comparevalue()  {
    BufferedReader buffered = null;

        String val = editbox.getText().toString();
        InputStream inputStream =getResources().openRawResource(R.raw.blacklist);
        buffered = new BufferedReader(new InputStreamReader(inputStream));

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

            line = buffered.readLine();

        }if (val.equalsIgnoreCase(line)) {
            Toast.makeText(this, "Working", Toast.LENGTH_LONG).show();
        }
    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(this,"Not found",Toast.LENGTH_LONG).show();
    **}
    return buffered.toString();
}**

像这样更改代码

while (line != null) {

        line = buffered.readLine();
        if (val.equalsIgnoreCase(line)) {
            Toast.makeText(this, "Working", Toast.LENGTH_LONG).show();
        }
    }

你把if放在外面了。所以你只是在比较val和null

将它放在while中,并放在buffered.readLine()之前,这样就不会忽略第一行。大概是这样的:

line = buffered.readLine();
while (line != null) 
{
    if (val.equalsIgnoreCase(line)) 
    {
        Toast.makeText(this, "Working", Toast.LENGTH_LONG).show();
    }

    line = buffered.readLine();        
}

你在外面做if。因此,您只是将val与null进行比较。在这种情况下,我的editText中有一条语句而不仅仅是一个单词,如何循环遍历所有单词以检测backlist中存在的单词。如果(val.equalsIgnoreCase(line)){for(int i=0;i>val.length();i++{Toast.makeText(这个“工作”,Toast.length_LONG).show()}如果要匹配多个单词,那么最好使用像rabin carp这样的字符串匹配算法,或者看看这篇文章