카테고리 없음
[Java] BufferedReader사용법 (feat. 알고리즘)
미어
2023. 2. 25. 00:48
기본 개념
- Scanner : 입력을 받을 시, 공백(space)이나 Enter를 모두 경계로 인식함
nextInt(), next(), nextchar() 등 다양한 형식의 데이터 입력가능 - BufferedReader : Enter만 경계로 인식함, String으로만 데이터 인식
장점 : 알고리즘의 시간을 줄일 수 있다.
case별 BufferedReader 사용 방법
1. 공백을 포함하지 않는 Int형
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int n = Integer.parseInt(br.readLine());
BufferedReader를 통한 선언 -> readLine() 메소드를 통해 String으로 입력받음
=> Integer.parseInt() 메소드를 통해 int형으로 형변환
2. 공백을 포함하는 경우의 Int형
방법 1) StringTokenizer 이용 (Default값 = " ")
public class Example {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
System.out.println("a의 값:"+a+", b의 값 :"+b+", c의 값 :"+c);
}
출력 결과
// input : 3 6 9
// output : a의 값 : 3, b의 값 : 6, c의 값 : 9
배열에서의 사용
String s1 = br.readLine();
StringTokenizer st1 = new StringTokenizer(s1);
for(int i=0; i<road.length; i++) {
road[i] = Long.parseLong(st1.nextToken());
}
String s2 = br.readLine();
StringTokenizer st2 = new StringTokenizer(s2);
for(int i=0; i<liter.length; i++){
liter[i] = Long.parseLong(st2.nextToken());
}
입력받은 문자열을 StringTokenizer에 넣은 후, nextToken() 메소드를 통해 공백단위로 인식.
방법 2) StringTokenizer 이용 (Default값 = " ")
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
String arr[] = s.split(" ");
int a = Integer.parseInt(arr[0]);
int b = Integer.parseInt(arr[1]);
int c = Integer.parseInt(arr[2]);
문자열을 split() 메소드를 통해 공백 단위의 분할 후 문자열 배열에 저장
=> 각 문자열 배열에 저장된 값을 Integer.parseInt() 메소드를 통해 정수형으로 변환
Reference
https://gyuwon95.tistory.com/48