2015-08-17 140 views
0

我想比較編輯文本的值與文件中的所有行(該文件是單詞列表)。從文本文件中讀取值並與edittext進行比較

我已經做到了這一點,

 try{ 
      final InputStream file = getAssets().open("words.txt"); 
      reader = new BufferedReader(new InputStreamReader(file)); 
      String line = reader.readLine(); 
      while(line != null){ 

       line = reader.readLine(); 
       if(ss == line.toLowerCase()){ 
        Toast.makeText(this, "Working!", Toast.LENGTH_SHORT) 
          .show(); 
       } 
       else{ 
        Toast.makeText(this, "Not found !", Toast.LENGTH_SHORT) 
          .show(); 
       } 
      } 
     } catch(IOException ioe){ 
      ioe.printStackTrace(); 
     } 

這裏ss是文本框的值。

String ss = (res.getText()).toString(); 

這是words.txt文件 https://raw.githubusercontent.com/eneko/data-repository/master/data/words.txt

但上面的代碼是行不通的。

編輯:

我檢查了文件是否被打開與否,這個問題是文件沒有打開。

 try{ 
      final InputStream file = getAssets().open("words.txt"); 
      Toast.makeText(this, "File Opened", Toast.LENGTH_SHORT) 
        .show(); 
      reader = new BufferedReader(new InputStreamReader(file)); 
      String line ; 
      while((line = reader.readLine()) != null){ 

       if(ss.equalsIgnoreCase(line)){ 
        Toast.makeText(this, "Working!", Toast.LENGTH_SHORT) 
          .show(); 
        TextView tv = myTextViewList.get(counter); 
        tv.setText(line); 
       } 
       else{ 
        Toast.makeText(this, "Not found !", Toast.LENGTH_SHORT) 
          .show(); 
       } 
      } 
     } catch(IOException ioe){ 
      ioe.printStackTrace(); 
     } 
+0

你是什麼意思'它不工作'?不循環?它沒有正確比較它們嗎? – Ben

+0

我的意思是那些敬酒沒有顯示。我有2敬酒如果找到這個詞和沒有匹配的詞 –

+0

給與Passiondroid的答案去吧,我認爲應該工作 – Ben

回答

0

試試這個

ss.equalsIgnoreCase(line.toLowerCase()) 

替換 「==」 要麼 「equalsIgnoreCase」 或 「equals

+0

它沒有工作。 –

0

您正在閱讀的線的兩倍,以及使用equalsIgnoreCase比較字符串

 while((line = reader.readLine()) != null){ 

      if(ss.equalsIgnoreCase(line)){ 
       Toast.makeText(this, "Working!", Toast.LENGTH_SHORT) 
         .show(); 
      } 
      else{ 
       Toast.makeText(this, "Not found !", Toast.LENGTH_SHORT) 
         .show(); 
      } 
     } 
+0

其實問題是文件沒有打開。看到我更新的代碼 –

+0

如果你得到異常,那麼你可以在這裏添加堆棧跟蹤 – Passiondroid

0

試試這個...

BufferedReader in = new BufferedReader(new FileReader(filepath)); 
boolean found = false; 
while ((line = in.readLine()) != null) 
{ 
if (line.contains(str)) 
{ 
    found = true; 
    break; //break out of loop now 
} 
} 
in.close(); 

if (found) 
{ 
    System.out.println("Yes"); 
} 
else 
{ 
    System.out.println("No"); 
BufferedWriter out = new BufferedWriter(new FileWriter(filepath,true)); 
out.newLine(); 
out.write(str); 
out.close(); 
} 
0

在你的代碼中,它不斷地逐行比較,直到它到達你的最後一行。 235886),它會循環連續運行。 它檢查所有線路逐一所以當你相比第一次,如果得手,然後打破循環, 還使用字符串比較.equals而不是「==」

String ss = "a"; 
     try{ 
      final InputStream file = getAssets().open("words.txt"); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(file)); 
      String line = reader.readLine(); 
      while(line != null){ 

       line = reader.readLine(); 
       if(ss.equals(line)){ 
        Toast.makeText(this, "Working!", Toast.LENGTH_SHORT) 
          .show(); 
        break; 
       } 
       else{ 
        Toast.makeText(this, "Not found !", Toast.LENGTH_SHORT) 
          .show(); 
        break; 
       } 
      } 
     } catch(IOException ioe){ 
      ioe.printStackTrace(); 
     } 

希望這將幫助你..

相關問題