2016-12-03 2 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

'돈'객체가 무엇을 해야하는지. 구매를 인스턴스화하면 이후에는 아무 것도하지 않습니다. 나는 당신이'ArrayList'에'count'를 저장하는 이유를 이해하지 못합니다. – jpuriol

+0

don은 관련이 없기 때문에이 질문을 할 때 제가 꺼내려고했던 프로그램의 일부입니다. 나중에 번호를 가지고 다른 일을하고 싶기 때문에 계산을 저장하고 있습니다. –

+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; 
} 

지금 물론, 당신은 아마 고려하면 문자열이 아니라 단어를 찾고 있다는 사실을해야 :

은 당신이 대신해야 할 것은 다음과 같은 약이다. 그러나 이미 배웠다면 정규 표현식을 사용하여 더욱 도움이 될 수 있습니다.