본문 바로가기

Dev/Java

Java - 입력: BufferedReader, StringTokenizer

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를 새로 선언해야한다.