2015-08-17 4 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(); 
     } 

здесь сс это значение текстового поля.

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

это файл words.txt https://raw.githubusercontent.com/eneko/data-repository/master/data/words.txt

Но приведенный выше код не работает.

EDIT:

Я проверил ли файл открывается или нет, проблема в файл не открывается.

 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

Если вы получаете исключение, можете ли вы добавить stacktrace здесь – 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(); 
     } 

Надеется, что это поможет ..

 Смежные вопросы

  • Нет связанных вопросов^_^