[JAVA] 자바 BufferedReader 사용법
자바에서 입력을 받을 때 Scanner 클래스로 입력을 받아왔었다.
BufferedReader가 사용하기 불편해서 Scanner가 등장한 걸로 알고 있지만 백준 문제를 풀다 보면 Scanner를 사용했을 때
입력 자체에서 시간 초과가 걸리는 경우가 많아서 BufferedReader를 다시 사용하게 되었다.
Scanner는 내부적으로 정규 표현식이 너무 많이 적용되어있어서 parse 할 때는 편리하지만, 성능이 희생당한다.
추가로 출력을 해주는 BufferedWriter도 있지만, 출력을 할 때 StringBuilder에 담아서 출력만 해도 출력 시간 초과는 해결된다.
이 글에서는 BufferedReader만 간단하게 사용하는 법을 정리하기로 했다.
BufferedReader 사용법
1
2
3
4
5
6
7
8
9
10
11
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BR {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(str);
}
}
|
cs |
사용하기 위해선 3가지 코드를 작성해주어야 한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
main함수에 throws IOException를 추가해주면 기본적인 준비는 마쳤다.
고려해야할 점은 br.readLine()의 return은 String이므로 String으로 입력을 받아야한다.
또한 BufferedReadr는 Line 단위로 읽는다.
자주 사용하는 추가적인 함수들
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import java.util.*;
import java.io.*;
public class BR {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(str);
// 정수 변환시
int n = Integer.parseInt(str);
// 문자를 자를 시
StringTokenizer st = new StringTokenizer(br.readLine());
String str1 = st.nextToken();
int m = Integer.parseInt(st.nextToken());
String[] strs = br.readLine().split(" ");
}
}
|
cs |
문자를 입력을 받은 경우 보통 두 가지 경우가 발생한다.
- 입력받은 문자를 숫자로 변환할 경우
- 입력받은 문자를 특정 문자 기준으로 자를 경우
11줄) 문자를 숫자로 변환할 경우는 Integer.parseInt()로 변환해주면 된다.
문자를 특정문자 기준으로 자를 경우 두 가지 방법이 가능하다.
14줄) StringTokenizer를 사용할 경우 StringTokenizer 생성자에 입력받을 문자를 넣은 후, nextToken() 함수로 하나 씩 가져와 사용할 수 있다.
공백이 아닌 특정 문자 기준으로 자르고 싶을때에는 new StringTokenizer(br.readLine(), "자를문자");
18줄) String.split()을 사용할 경우 반환을 String [] 배열로 받아주어야 한다. split() 함수의 인자로 자를 문자를 입력하면 된다.
'프로그래밍 > 자바' 카테고리의 다른 글
[JAVA] 자바 접근 제어자 (0) | 2022.04.07 |
---|---|
[JAVA] 자바 String, StringBuilder 클래스 활용 (0) | 2022.03.29 |
[JAVA] 자바 오버로딩 (Overloading) (0) | 2022.03.18 |
[JAVA] 자바 Iterator와 ListIterator 사용법 (0) | 2022.03.16 |
[JAVA] Comparable과 Comparator 사용법 (0) | 2022.03.15 |