[출처] (초보님들을 위한)IO와 Sring 관련 문제 (자바/Java/C/C++ 개발자모임 [Code人/코드인]) |작성자 조병덕
Devist's thinks.
Step_1. 문제를 해결하기 위해서 가장 먼저 해야 할 것은 파일을 읽어 들이는 것이다. 파일을 읽어들이기 위해서는 한 문자씩 읽는 방법과, 문자열의 단위로 읽어들이는 방법이 있다.
Step_2. 첫번째 방법인 문자를 읽는 방법으로 단어를 세기 위해서는 하나의 문자를 읽을때, 그 문자가 공백임을 파악하고 공백일 경우에 단어의 수를 하나 증가시키는 것이다. 한가지 주의해야 할 점은, 이전의 문자가 공백일경우엔 단어가 아니므로 단어의 카운트를 증가시키지 않아야 한다.
Step_3. 두번째 방법인 문자열의 단위로 읽어들이는 방법은, 좀더 쉽게 문제를 해결할 수 있다. 버퍼를 이용해 문자를 읽어들인 후, 그 문자열을 단어의 단위로 나누어 주는 클래스 StringTokenizer(), 그리고 각 토큰의 갯수를 세어주는 countTokents() 메소드를 사용할 수 있다.
Answer
import java.io.*;
import java.util.*;
public class CountWord {
public static void main(String[] args) throws IOException {
File f = new File("sample.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
StringTokenizer st;
int cnt = 0;
String str = "";
while((str = br.readLine()) != null) {
st = new StringTokenizer(str);
cnt += st.countTokens();
}
System.out.println(cnt);
br.close();
fr.close();
}
}