개발/Java
Java - 입력: BufferedReader, StringTokenizer
홀든콜필드
2023. 12. 19. 11:23
728x90
- BufferedReader : 문자열로 입력을 받게 되어있음. 받을 때 마다 적절한 형변환이 필요함. 그러나 스캐너보다 빠름
- InputStream : 자바에서 기본이 되는 입출력, Stream이란 출발지와 도착지를 이어주는 다리임
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
버퍼리더를 사용하면 위의 방식으로 사용하게 되는데 코드를 해석해보면
1. 텍스트를 읽어 메모리에 저장해둠 (BufferReader)
2. InputStreamReader(System.in) 에서 바이트 스트림을 문자 스트림으로 변환
이제 br을 통해 값을 입력받을 수 있음.
단, 이것을 사용하려면 예외처리 IOException e가 필요함
- StringTokenizer : 공백이 있다면 뒤에 문자열이 공백 자리를 땡김, 백준을 풀 때 많이 사용하게 된다. 그리고 위의 BufferrReader와 연계하여 사용하는 경우가 많다.
int N, M;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
-> input 4 5
-> N = 4, M = 5
for(int j = 0; j < M; j++){
st = new StringTokenizer(br.readLine());
int pre = Integer.parseInt(st.nextToken());
int after = Integer.parseInt(st.nextToken());
int tmp = array[pre];
array[pre] = array[after];
array[after] = tmp;
}
단, 위처럼 계속 값을 받아야하면 new StringTokenizer를 새로 선언해야한다.