2014-11-24 6 views
0

텍스트 파일이 있고 정의한 특정 단어의 총 수를 계산하고 싶습니다.텍스트 파일의 특정 단어 수 - Java

내 코드 :

String word1 = "aa"; 
    String word2 = "bb"; 

    int wordCount = 0; 

    //creating File instance to reference text file in Java 
    File text = new File("D:/project/log.txt"); 

    //Creating Scanner instnace to read File in Java 
    Scanner s = new Scanner(text); 

    //Reading each line of file using Scanner class 
    while (s.hasNext()) { 
     totalCount++; 
     if (s.next().equals(word1) || s.next().equals(word2)) wordCount++; 
    } 

    System.out.println("Word count: " + wordCount); 

그러나, 그것은 단지 'AA의 수를 계산합니다. 그것은 bb의 수를 세지 않습니다. 무엇이 문제 일 수 있습니까? 당신은 if 상태에서 두 번 s.next()를 호출

while (s.hasNext()) { 
    totalCount++; 
    String word = s.next() 
    if (word.equals(word1) || word.equals(word2)) wordCount++; 
} 
+1

다음 질문에 대답 해주십시오. 두 번 전화하면 어떻게됩니까? –

+0

@JBNizet OP를 교육하려는 유일한 시도는 그 자신을 결론에 도달하게합니다. 독수리 (나 포함되는)와 같은 빠른 식사를 바라고있는 다른 것. –

+0

@PredragMaric 적어도 당신의 대답은 오히려 어떤 설명없이 대체 코드를 제공하는 것보다 문제가 무엇인지 설명합니다. :) –

답변

1

에 당신이 s.next()를 호출 할 때마다 당신의 while 루프를 변경 , 다음 단어를 찾는, 그래서 각 루프는 하나 개의 단어는 "AA"또는 다음 단어는 "BB"인지 여부를 테스트하고있다. 루프 내에서 s.next()으로 전화하여 결과를 변수에 저장 한 다음 두 단어로 확인하십시오.

1

이 방법을 사용해보십시오.

while (s.hasNext()) { 
    totalCount++; 
    String word = s.next(); 
    if (word.equals(word1) || word.equals(word2)) wordCount++; 
} 
2

, 다음 단어에 대한 각 호출 이동 :

1

s.next()을 두 번 호출하면 문제가 발생합니다. 각 호출은 입력에서 새 토큰을 읽습니다. 당신은 당신의 경우 조건에 다음() 두 번 호출

while (s.hasNext()) { 
    String str = s.next(); 
    totalCount++; 
    if (str.equals(word1) || str.equals(word2)) wordCount++; 
} 
1

: 그것은에

변경합니다.

시도 : 기타로

String word = s.next(); 

if (word.equals(word1) .... 
0
String[] array = new String[]{"String 1", "String 2", "String 3"}; 

    for(int i=0; i < array.length; i++) 
    { 
        System.out.println(array[i]); 
        wordCount=0; 
        while (s.hasNext()) 
        { 
         totalCount++; 
         if (s.next().equals(array[i])) 
         wordCount++; 
        } 
        System.out.println("each Word count: " + wordCount); 
    } 
3

가 말했다 : 당신이 다음에()를 두 번 호출 문제의 뿌리. 귀하의 알 고를 쉽게 확장 할 수있는 방법을 알려드립니다.

Set<String> words = new HashSet<>(Arrays.asList("aa", "bb")); 
... 
while (s.hasNext()) { 
    totalCount++; 
    if (words.contains(s.next())) wordCount++; 
}