2011-03-11 2 views
0
System.out.println("Please enter the required word :"); 
    Scanner scan2 = new Scanner(System.in); 
    String word2 = scan2.nextLine(); 
    String[] array2 = word2.split(" "); 

    for (int b = 0; b < array2.length; b++) { 
     int numofDoc = 0; 

     for (int i = 0; i < filename; i++) { 

      try { 

       BufferedReader in = new BufferedReader(new FileReader(
         "C:\\Users\\user\\fypworkspace\\TextRenderer\\abc" 
           + i + ".txt")); 

       int matchedWord = 0; 

       Scanner s2 = new Scanner(in); 

       { 

        while (s2.hasNext()) { 
         if (s2.next().equals(word2)) 
          matchedWord++; 
        } 

       } 
       if (matchedWord > 0) 
        numofDoc++; 

      } catch (IOException e) { 
       System.out.println("File not found."); 
      } 

     } 
     System.out.println("This file contain the term " + numofDoc); 
    } 
} 

}입력 문자열 문제

이 특정 단어가 포함 된 문서의 수를 계산하는 내 코드입니다. 예 : 천만 개의 텍스트 파일과 문자열 COW가 천 개가 넘는 것으로 가정합니다. COW 문자열이 포함 된 총 1000 개의 문서를 찾고 있습니다.

내 프로그램은 현재 하나의 문자열 입력 만 처리 할 수 ​​있습니다.

내 프로그램의 출력은 :

COW이 용어가 포함 된 파일 (1000)

내가 당면한 문제

I 입력 3 스트링, 그것은 3 개 스트링을 처리 할 수 ​​없을 때 지금이다. 예를 들어

COW 좋다

이 단어를 포함하는 파일이 용어를 포함하는 0

파일 것은 0

이 단어를 포함하는 파일은 0

이다 나는 하루 종일 노력해 왔지만 내 실수는 어디 있는지 안다. 내 실수를 가리키는 마음?

if (s2.next().equals(word2)) 

word2 = "I love you" 경우 당신은 단어 I love you을 포함하고 있는지를 equals(), s2.next()해야하고있어 :

+0

당신은 "COW IS GOOD"이라는 문구를 파일에 넣어야합니까? 아니면 "COW", "IS"또는 "GOOD"중 하나를 찾아야한다는 의미입니까? – adarshr

+0

'String [] array2 = word2.split ("");'사용법은 무엇입니까? –

답변

0

이 코드에 따르면, 당신은 루프 3 번 (array2.length을) 할 수 있지만 전혀 배열 2를 사용하지 않는 세 번 "COW이 좋다". 당신은 줄을 바꿔야한다 s2.next().equals(word2)s2.next().equals(array2[b])

+0

축하합니다. 감사합니다.이 작은 실수로 인해 하루가 ... 감사합니다. –

0

문제는 여기에있다.

이 문제를 해결하는 한 가지 방법이 있습니다. 대신, 당신은 문자열을 찾아

String[] words = word2.split(" "); 
for (String word: words) { 
    if (s2.next().equals(word)) { 
     matchedWord++; 
    } 
} 
+0

그리고 나는 Scanner.hasNext()가 라인을 되돌려 주었을 때 기본적으로 라인을 단어로 나눕니다. COW IS GOOD은 단어가 아닙니다 :) – extraneon

+0

'Scanner.hasNext()'는 단어를 반환합니다. OP는'String word2 = scan2.nextLine();'에서 문장을 얻습니다. 그는 단지 단어로 분해하고 유효성을 검사해야합니다. –