2016-12-03 3 views
0

Код, приведенный ниже, предназначен для подсчета количества раз, когда слова в списке y встречаются либо в документе через FileReader, либо в списке x. В конце концов, я хочу, чтобы список y также был импортированным документом, но когда я запускаю код в документе, он либо дает мне ложный счет, либо вообще не рассчитывает. Что происходит?Программа подсчета слов не работает

Также файлы составляют блокнот. Я пользуюсь окнами

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.util.*; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class test { 
    @SuppressWarnings("resource") 
    public static void main(String[] args) throws Exception { 
     don w = new don(); 

     List<Integer> ist = new ArrayList<Integer>(); 
     // List<String> x =Arrays.asList 
     // ("is","dishonorable","dismal","miserable","horrible","discouraging","distress","anguish","mine","is"); 

     BufferedReader in = new BufferedReader(new FileReader("this one.txt")); 
     String str; 

     List<String> list = new ArrayList<String>(); 
     while ((str = in.readLine()) != null) { 
      list.add(str); 
      // System.out.println(list); 
      List<String> y = Arrays.asList("Hello", "the", "string", "is", "mine"); 
      for (String aY : y) { 
       int count = 0; 
       for (String aX : list) { 
        if (aY.contains(aX)) { 
         count++; 
        } 
       } 
       ist.add(count); 
       // no need to reset the count 
      } 
      int g = ist .stream() 
         .mapToInt(value -> value) 
         .sum(); 
      System.out.println(g); 
     } 
    } 
} 
+2

Что должен делать объект 'don'. Вы создаете экземпляр, покупаете, после этого вы ничего не делаете. Я не понимаю, почему вы храните 'count' на' ArrayList' – jpuriol

+0

, но дон является частью программы, которую я хотел вынести, задавая этот вопрос, потому что это не связано. Я храню счет, потому что я хочу делать другие вещи позже с номером. –

+0

Ваш код довольно запутанный, но я думаю, проблема в том, что вы сравниваете строку текста из документа со списком строк. Поэтому он никогда не будет соответствовать – Safirah

ответ

0

Если вы хотите сосчитать, вам следует ... посчитать.

Здесь вы можете проверить, содержит ли строка только подстроку.

Что вы должны сделать вместо примерно следующее:

static int count(String line, String word) { 
    int count = 0; 
    for (int offset = line.indexOf(word); offset >= 0; offset = line.indexOf(word, offset + 1 + word.length())) { 
    count++; 
    } 
    return count; 
} 

Теперь, конечно, вы, вероятно, должны принять во внимание тот факт, что вы ищете подстроки и не слова. Но если вы уже это узнали, вы можете использовать регулярные выражения, чтобы помочь вам в дальнейшем.

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