2016-11-30 66 views
-1

我想爲我的應用程序創建一個黑名單,因此用戶通過editText輸入的任何存在於blacklist.txt文件中的單詞都會被標記出來。我下面的代碼沒有做任何事情,我不知道爲什麼。比較.txt文件和editText之間的值

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(); 
}** 
+0

你正在做的,如果,而在外面。所以你只是將val與null進行比較。 – cuoka

回答

1

如果同時外你已經把。所以你只是將val與null進行比較。

把它放在裏面,而在buffered.readLine()之前,所以你不會忽略第一行。事情是這樣的:

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

    line = buffered.readLine();   
} 
+0

非常感謝它的工作! –

+0

@ekennechilex請接受答案。 – cuoka

0

改變你這樣的代碼

while (line != null) { 

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

非常感謝,它工作! –

+0

在一個案例中,我有一個陳述,而不僅僅是我的editText中的一個單詞,我如何循環遍歷所有單詞來檢測存在於背單中的單詞。 if(val.equalsIgnoreCase(line)){int i = 0; i> val.length(); i ++)Toars.makeText(this,「Working」,Toast.LENGTH_LONG).show(); } –

+0

如果你要匹配不止一個單詞,那麼它是一個很好的字符串匹配算法像rabin鯉魚https://en.wikipedia.org/wiki/Rabin%E2%80%93Karp_algorithm或看看這個後http://stackoverflow.com/a/1765616/4363046 – MaxExplode