코딩테스트/입출력
입력(Scanner vs BufferedReader) + 입력값 분리(StringTokenizer, .split())
초코chip
2024. 1. 28. 20:13
Scanenr
개념
- 목적: 적은 양의 입력을 받을 때 사용
- 특징:
- 띄어쓰기(space)와 줄바꿈(enter)를 경계로 입력 값을 인식
- 가공할 필요가 없음 = 원하는 타입으로 바로 입력 받을 수 있음
사용법
Scanner 객체 준비
Scanner sc = new Scanner(System.in);
문자열 입력
String str = sc.next();
정수 입력
int a = sc.nextInt();
BufferedReader
개념
- 목적: 많은 양 or 빠른 입력을 받을 때 사용
- 특징:
- 오로지 줄바꿈(enter)만을 경계로 입력 값을 인식
- 입력 받은 데이터는 String으로 고정
사용법
준비
아래 2가지 처리를 진행
- 메인함수에 예외 발생 처리 추가
- BufferedReader 객체 준비
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
}
한 줄 읽기
String str = br.readline();
띄어쓰기 + 형 변환 적용
아래의 프로세스가 일반적으로 진행
- br로 한 줄 읽은 내용을 st(StringTokenizer)객체에 저장
- st.nextToken() 메서드를 통해 구분자로 나눠진 내용을 하나씩 가져오기
- 하나씩 가져온 내용을 valueOf() 메서드를 통해 형변환 진행
예시: 아래 2줄 내용을 읽어오는 코드
1 2
3 4
//첫번째 줄 읽기 - 1,2
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Interger.valueOf(st.nextToken());
int b = Interger.valueOf(st.nextToken());
//두번쨰 줄 읽기 - 3, 4
st = new StringTokenizer(br.readLine());
int c = Interger.valueOf(st.nextToken());
int d = Interger.valueOf(st.nextToken());