2016-06-13 5 views
0

일치하는 단어와 집계 된 단어를 계산하고 싶습니다.출력에 오류가 있습니다. 단어 수가 Java에서 계산됩니다.

나는 두 개의 텍스트 파일을 가지고 있으며 서로 단어를 비교합니다.

예 :

텍스트 파일 : a b c d e.

b 텍스트 파일 : a a a a.

이 출력을보고 싶습니다.

출력 : a 5.

그러나 코드를 작성할 때 작동하지 않았습니다.

도와주세요.

나는 eclipses, windows 8.1 64bit를 사용하여 java adk 1.8 용 코드를 작성했습니다.

다음 코드입니다. 내 코딩

package test1; 

    import java.io.BufferedReader; 
    import java.io.FileNotFoundException; 
    import java.io.FileOutputStream; 
    import java.io.FileReader; 
    import java.io.IOException; 
    import java.sql.PreparedStatement; 
    import java.sql.SQLException; 
    import java.util.ArrayList; 
    import java.util.List; 

    public class ex01 { 

     public static void main(String[] args) throws IOException { 
      // TODO Auto-generated method stub 


      FileReader fr = new FileReader("C:/Users/Hong/Desktop/승현연구/152-300/301.txt"); 
      FileReader key_item = new FileReader("C:/Users/Hong/Desktop/승현연구/no-yes2500.txt"); 

      BufferedReader br = new BufferedReader(fr); 
      BufferedReader br2 = new BufferedReader(key_item); 

      FileOutputStream file = new FileOutputStream("C:/Users/Hong/Desktop/승현연구/답변빈도/a301.txt"); 

      List<String> key = new ArrayList<String>(); 
      List<String> str = new ArrayList<String>(); 

      String in = ""; 
      String s = ""; 
      String ss[]; 

      while ((in = br2.readLine()) != null) { 
       key.add(in); 
      } 
      while ((s = br.readLine()) != null) { 
       str.add(s); 
      } 

      ***int cnt = 0; 
      int count = 0; 
      int cont = 0; 
      String txt = ""; 

      for (int i = 0; i < key.size(); i++) { 
      for (int j = 0; j < str.size(); j++) { 

       System.out.println(j + " " + str.get(j)); 

       if (str.get(j).lastindexOf(key.get(i))) { 

        cnt++; 
        //System.out.println(key.get(i) + " " + cnt); 
       } 
       if (cnt == 1){ 
        //cont ++ 1; 
       //System.out.printf("%d",cont); 
       } 
      } 

       System.out.println(key.get(i) + " " + cnt); 

       txt = txt + key.get(i) + " " + cnt + "\n"; 

       cnt = 0; 

       } 
      file.write(txt.getBytes()); 

      }*** 

      //System.out.println("Hello Java"); 


    } 

, 오류가이 설명에 대한 요약 이유 [(str.get (J) .lastindexOf (key.get (I))) 경우] 내가 모르는이 줄 을 causeing 텍스트 파일과 내가 무엇을하고 싶은지

첫 번째 코드는 301 텍스트 파일과 no-yes2500 텍스트 파일을 비교하여 no-yes2500에 속한 단어 수를 출력하는 것입니다. (예 : apple 3 바나나 2)

  • 301.txt는 Q &에 대한 문장으로 구성된 텍스트 파일입니다. 커뮤니티 응답.
  • 노 yes2500.txt는 여러분의 코드에 오타가 (lastIndexOflastindexOf를 교체하고, 현재의 int로 부울로 평가하는 경우 절에서 식을 키워드 목록
+0

을보십시오, 나는 당신의 프로그램을 얻을하지만 귀하의 질문에 어떤 생각? – Minh

+0

aaaa 내 질문은 이것입니다. 이 코드는 if (str.get (j) .lastindexOf (key.get (i)))에 대한 오류를 일으 킵니다. 이 코드를 수정하고 싶습니다. 이 오류가 나타나는 이유를 알고 싶습니다. –

+0

'a 5'는 무엇입니까? ** a ** b 텍스트 파일의 총 개수입니까? –

답변

1
str.get(j).toString().lastIndexOf(key.get(i).toString())>=0 

그래서이

+0

나는 이것을 시도했다. 그러나 오류 메시지가 나타납니다 ... 오류 이름은 "스택에서 사용되지 않는 메소드"입니다. 및 [이유는 가상 컴퓨터가 호출 스택에서 이전 코드를 실행하는 모든 스택 프레임을 제거 할 수 없습니다. 가상 시스템이 디버거에 해당 프레임에 유효한 데이터를 제공하지 않는 경우 이러한 오래된 프레임을 스테핑하면 대상 가상 시스템에 위험 할 수 있습니다.] 왜 이런 일이 발생합니까? –

0

없다 즉, 인덱스)