StringTokenizer: 컴마로 구분되는 문자열들을 분리 or 특정 문자에 따라 문자열을 나누고 싶을 때
String :문자열을 Tokenizer: 토큰화하다 => 하나의 문자열을 여러 개의 토큰으로 분리
IMPORT
import java.util.StringTokenizer;
import java.util.*;
StringTokenizer 생성자
- StringTokenizer st = new StringTokenizer(문자열); //띄어쓰기 기준으로 문자열 분리
- StringTokenizer st = new StringTokenizer(문자열, 구분자); //구분자를 기준으로 문자열 분리
- StringTokenizer st = new StringTokenizer(문자열, 구분자, true/false); //구분자를 기준으로 분리된 문자열 토큰에 포함 안시킬지(default: false), 시킬지(true)
StringTokenizer 메서드
return 값 | method명 | 역할 |
boolean | hasMoreTokens() | 남아있는 토큰이 있으면 true를 리턴, 더 이상 토큰이 없으면 false 리턴 |
boolean | hasMoreElements() | hasMoreTokens와 동일한데 엘레먼트보다 토큰으로 된 메서드를 주로 씀 |
String | nextToken() | 객체에서 다음 토큰을 반환 |
String | nextToken(String delim) | delim 기준으로 다음 토큰을 반환 |
Object | nextElement() | nextTokens 메서드와 동일하지만 문자열이 아닌 객체를 리턴 |
int | countTokens() | 총 토큰의 개수를 리턴 |
구분자가 여러개
StringTokenizer st = new StringTokenizer(str, ".,");
//.와 , 두 개의 문자를 구분자로 사용해서 분리
=> 하나 문자가 아닌, 여러개의 문자를 구분자로 토큰을 만들 수 있다.
Split 는 빈 문자열을 토큰으로 인식하지만, StringTokenizer는 인식하지 않는다.
StringTokenizer는 결과값이 문자열, Split 는 결과값이 문자열 배열
=> StringTokenizer를 이용하면, 전체 토큰을 반복문을 이용해서 출력해야 한다.
StringTokenizer st = new StringTokenizer(str, ".", true);
int i=1;
while(st.hasMoreTokens()){
System.out.println(i++)+st.nextToken());
}
readLine(): BufferedReader의 mothod, BufferedReader에서 읽어들인 값을 String으로 저장
만약, 숫자형으로 다시 변환하고 싶다면 Integer.parseInt() 사용
integer 나 char를 string으로 변환
String str = String.valueOf(num);
String 을 Char로 변환
Char ch1 = str.CharAt(0); //str의 길이가 1인 경우
Char[] ch2 = str.toCharArray(); //str의 길이가 2 이상
2번 줄의 char array를 출력하여 확인하고자 하면 다음과 같이 변환하여 출력
Arrays.toString(a1.toCharArray())
백준 반복문, 빠른 A+B
import java.util.*;
import java.io.*;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for(int i=0;i<T;i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
bw.write((a+b)+"\n");
}
bw.flush();
}
}
'백준 문제 풀기' 카테고리의 다른 글
[단계별로 풀어보기 1단계] 입출력과 사칙연산 (0) | 2023.06.28 |
---|---|
EOF(End of File) (반복문 A+B -4) (0) | 2023.06.23 |
런타임 에러 (NoSuchElement) (반복문 A+B-5)+백준에서 package를 안 지워도 런타임에러가 뜬다... (0) | 2023.06.21 |