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