728x90

개념 및 사용법

BufferedReader 클래스는 Scanner 클래스처럼 입력받을 때 사용하는 클래스이다.

BufferedReader와 Scanner은 차이점이 있는데, Scanner은 입력받은 데이터를 가공할 필요가 없어 편리하지만, BufferedReader은 그렇지 않다는 것이다.

 

예를 들어 Scanner은 nextInt() 메서드를 이용하면 자동으로 int형을 받아오는 데 반해 BufferedReader의 readLine() 메서드는 항상 String으로 입력받는다. 따라서 String을 Integer로 변환해 주는 과정이 필요하다.

 

또한, Scanner은 자동으로 공백을 기준으로 입력되는 값을 구분하는데, BufferedReader의 readLine() 메서드는 공백까지 포함하여 문자열로 입력받는다. 따라서 이 부분도 가공을 필요로 하고, 필자는 StringTokenizer 클래스를 이용한다.

 

StringTokenizer 클래스는 기본적으로 공백을 기준으로 문자열을 쪼개주는 클래스이다.

 

따라서, BufferedReader 클래스와 StringTokenizer 클래스를 적절히 같이 사용하면 보다 편리하게 사용할 수 있다.

 

사용법은 다음과 같다.

 

먼저, import를 해야 한다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

다음으로, IOException을 throw 해야 한다. (BufferedReader 클래스를 사용하기 위해서는 예외처리를 해야 한다.)

위 코드에서 아래코드처럼 추가하면 된다.

public static void main(String[] args) {
    
}
public static void main(String[] args) throws IOException {

}

이후, BufferedReader 객체를 생성한다.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

StringTokenizer 클래스도 사용하려면 객체를 생성해야 한다.

readLine()은 BufferedReader 클래스가 제공하는 메서드이다.(한 줄을 읽어 문자열로 입력받는다.)

StringTokenizer st = new StringTokenizer(br.readLine());

이후, StringTokenizer을 이용하여 입력받은 데이터를 가공한다.

 

ex) 10 5를 입력했을 때, 첫 st.nextToken()은 10을, 두 번째 st.nextToken()은 5를 가져온다.

Integer.parseInt는 String을 Int형으로 형변환해 주는 메서드이다.

int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());

 

이렇게 하면, A와 B를 입력받을 수 있다.

방법은 Scanner보다 조금 복잡하지만, Scanner보다 상대적으로 빠르다.

또, 처음에는 어려울 수 있지만 BufferedReader 클래스를 계속 사용하다 보니, Scanner보다 훨씬 편리한 것 같이 느껴진다.

 

예시 코드

백준 알고리즘 1000번 : A + B 문제를 BufferedReader + StringTokeinzer 클래스로 해결한 코드이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        st = new StringTokenizer(br.readLine());
        int A = Integer.parseInt(st.nextToken());
        int B = Integer.parseInt(st.nextToken());

        System.out.println(A + B);
    }
}

틀린 부분이 있다면 정정해 주시면 감사하겠습니다.
제가 이해한 내용을 간단히 요약하여 기록해 두고, 기억이 나지 않을 때마다 찾아보려는 목적으로 작성하는 글입니다.
따라서 설명이 부족할 수 있으니 양해 부탁드리고, 궁금한 부분이 있으시면 자유롭게 댓글 남겨주세요!

728x90

'[JAVA]STUDY > 간단한 Class 사용법' 카테고리의 다른 글

[JAVA]StringTokenizer 클래스  (0) 2023.01.13
[JAVA]String 클래스 - charAt() 메서드  (0) 2023.01.11
[JAVA]StringBuilder 클래스  (0) 2022.12.30
[JAVA]Scanner 클래스  (0) 2022.12.27

+ Recent posts