2013년 7월 1일 월요일

(130701) 6일차 ScannerTest.java (Scanner 테스트, StringTokenizer, Vector 이용 - 6일차 3교시 문제 - 입력받아서 최대 빈도수 출력)

 - 소스
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.Vector;

public class ScannerTest {

public static void main(String[] args) {
/* 직접 애국가 1절을 키보드로 입력 받은 후
* 그중 가장 많이 나오는 단어는 무엇인지 출력하시오.
* Stringtokenizer = Enumeration 클래스와 유사(공백만 집어넣으면 공백이 한개든지, 두개든지 잡아냄)

* StringTokenizer st = new StringTokenizer("어 아  이   우    오"," ");
* while(st.hasMoreTokens()){
* System.out.println(st.nextToken()); // 공백이 여러개든, 한개든 추출
* } // st.countTokens()를 이용해서 잘라낸 갯수 가져옴

* String m = "어 아  이   우    오";
* String [] data = m.split(" ");
* for(int i=0 ; i< data.length ; i++{
* System.out.println(data[i]); // 공백을 다 찍어냄
* }
*/

Scanner sc = new Scanner(System.in);
String data = sc.nextLine();
System.out.println(data);

Vector<String> s = new Vector<>();
StringTokenizer st = new StringTokenizer(data," ");
while(st.hasMoreTokens()){
s.add(st.nextToken()); // 공백이 여러개든, 한 개든 추출해서 List의 Vector에 삽입
}

int [] arr = new int [s.size()];

for(int i = 0; i < s.size() ; i++){
for(int j = 0 ; j < s.size() ; j++){
if(s.get(i).equals(s.get(j)))
arr[i]++;
}
}

int max = 0;
String Mmax = null;
for(int i = 0; i < s.size() ; i++){
for(int j = i+1 ; j < s.size() ; j++){
if(s.get(i).equals(s.get(j)))
arr[j] = 0;
if(arr[i] > max){
max = arr[i];
Mmax = s.get(i);
}
}

if(arr[i] != 0)
System.out.println(s.get(i) + " : " +arr[i]);
}
System.out.println("가장 많이 나오는 단어 : "+ Mmax + ", " +max + "번");
}
}


 - 결과