
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 |