본문 바로가기
Language/JAVA

[JAVA] BufferedReader, BufferedWriter (+ StringTokenizer) 입출력 사용법

by 코젼 2024. 2. 9.
728x90
반응형

 

➡️BufferedReader

많은 입력을 요구할 때는 Scanner보다 BufferedReader가 효율적이다.

멀티 쓰레드 환경에서는 BufferedReader가 더 안전하다.

* BufferedReader 선언

import java.io.BufferedReader;
import java.io.InputStreamReader;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

readLine으로 BufferedReader 데이터를 받아올 때는 반환 값이 String이다.

int는 Integer.parseInt 처리를 통해 받아야 한다.

String s = br.readLine();

추가적으로 IOException 처리를 해주어야 한다.

import java.io.IOException;
public static void main (String[] args) throws IOException { ... }

 

➡️StringTokenizer

Line 단위로 받는 것이 아니라 공백 단위로 데이터를 받고 싶을 때는 StringTokenizer를 사용한다.

import java.util.StringTokenizer;
StringTokenizer st = new StringTokenizer(br.readLine());
String a = st.nextToken();
String b = st.nextToken();

➡️BufferedWriter

System.out.println 대신에 사용하는 출력. 버퍼를 이용한다.

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = "test";
bw.write(s); // Buffer에 있는 값 모두 출력
bw.newLine(); // 줄 바꿈
bw.flush(); // 남아있는 데이터 모두 출력
bw.close(); // 스트림 닫기

 


▶️ 기출문제

기출문제는 백준 15552번 풀이

https://www.acmicpc.net/problem/15552

 

15552번: 빠른 A+B

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

www.acmicpc.net

import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static void main (String[] args) throws IOException {
        // BufferedReader, BufferedWriter, BufferedWriter.flush
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int testCase = Integer.parseInt(st.nextToken());
        for (int i=1; i<=testCase; i++) {
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            int sum = a+b;
            bw.write(sum + "\n");
        }
        bw.flush();
        bw.close();
    }
}

▶️ 참고

https://rlakuku-program.tistory.com/33

 

 

728x90
반응형

'Language > JAVA' 카테고리의 다른 글

[JAVA] 문자열 반복 메소드 repeat  (0) 2024.02.15
[JAVA] while (n-- > 0) 의미  (0) 2024.02.11
JAVA 13일차 - 람다, 스트림  (0) 2022.07.06
JAVA 12일차 - 실습문제 02 수정  (0) 2022.07.06
JAVA 12일차 - 실습문제 02  (0) 2022.07.05

댓글