(Java) StringTokenizer

StringTokenizer란?

java.util패키지에 속한 클래스로 문자열을 구분자를 이용하여 나눌 때 주로 사용하는 클래스이다.

예를 들면 "I am jun"이라는 문자열을 StringTokenizer를 이요하여 공백을 구분자로 쪼개면 "I"  "am"  "jun"과 같이 3개로 나누어진다.

 

 

 

StringTokenizer의 생성자

new StringTokenizer(String str) // 문자열
new StringTokenizer(String str, String delim) // 문자열, 구분기호
new StringTokenizer(String str, String, delim, boolean returnDelims)

// str - 구문 분석할 문자열
// delim - 구분기호
// returnDelims - 구분 기호를 토큰으로 반환할지 여부를 나타낸다. (true 또는 false 입력)

 

 

StringTokenizer의 메서드

리턴값 메서드 설명
boolean hasMoreTokens() 남아 있는 토큰이 있으면 true, 없으면 false 리턴
String nextToken() 다음 토큰을 반환
String nextToken(String delim) 구분자를 기준으로 토큰 반환
boolean hasMoreElements() hasMoreTokens와 동일
Object nextElement() nextToken메서드와 동일하지만 객체를 리턴
int countTokens() 총 토큰의 개수를 리턴

 

 

 

문제를 통한 StringTokenizer 학습

Q. 

한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하시오.
문장속의 각 단어는 공백으로 구분된다.

ex) i am apple   →  apple 출력

 

package String;

import java.util.Scanner;
import java.util.StringTokenizer;

public class Day3 {
	public String solution(String str) {
    	// 1. 입력 받은 문자열 첫 번째 파라미터, 두 번째 파라미터로 공백 구분자
		StringTokenizer st = new StringTokenizer(str," ");
	// 2. 첫 번째 문자를 꺼내어 담는다.
        String answer = st.nextToken();
        // 3. 다음 토큰이 있으면 hasMoretokens()는 true를 반환하여 반복문 실행
		while(st.hasMoreTokens()) {
			String tmp = st.nextToken();
        // 4. 첫 번째 문자를 기준으로 비교하고 기준보다 길이가 길면 answer에 저장
			if(answer.length() < tmp.length()) {
				answer = tmp; 
			}
		}
		return answer;
	}
	public static void main(String[] args) {
		Day3 T = new Day3();
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		System.out.println(T.solution(str));
	}
}

 

<결과 화면>

 

 

 

'Java' 카테고리의 다른 글

(Java) Object toString()  (0) 2022.05.23
(Java) syntax error: insert } to complete ClassBody  (0) 2022.05.23
(Java) 논리 연산자 &,&& 와 |,|| 차이  (0) 2022.05.23
(Java)JVM 메모리 구조  (0) 2022.05.06
(Java)Scanner next(), nextLine 차이  (0) 2022.05.06