- 오늘의 학습 키워드
그대로 출력하기 2 성공
- 공부한 내용 본인의 언어로 정리하기
BufferedReader
:Scanner와 유사.
Bufferedwriter
:System.out.println();과 유사
둘은 모두 기존에 쓰던 scanner와 System.out.println()보다 속도 측면에서 훨씬 빠르기 때문에
(입력된 데이터가 바로 전달되지 않고 버퍼를 거쳐 전달되므로 데이터 처리 효율성을 높임)
많은 양의 데이터를 처리할 때 유리하다.
하지만 그에 비해 BufferdReader은 Enter만 경계로 인식하고 받은 데이터사 String으로 고정되기 때문에 입력받은 데이터를 가공하는 작업이 필요한 경우가 많다.
사용법에 앞서 이 둘을 사용하려면 다음의 import가 추가적으로 필요하다.
(사실은 위와 같이 일일이 적지 않아도 ctrl+shift+o를 눌러주면 이클립스가 자동으로 import를 제시해준다ㅎㅎ)
*BuffredReader 사용법
선언은 위에 있는 예제처럼 진행하면 된다.
입력은 readLine();이라는 메서드를 활용하는데, 여기서 반드시 주의해야할 점 2가지가 있다.
첫번째는 readLine()시 리턴값을 String으로 고정되기에 String이 아닌 다른타입으로 입력을 받을려면 형변환을 꼭 해주어야한다는 점이다.
두번째는 예외처리를 꼭 해주어야한다는 점이다. readLine을 할때마다 try & catch를 활용하여 예외처리를 해주어도 되지만 대개 throws IOException을 통하여 작업한다.
throw 이용 시
(1) 클래스를 import해주어야 한다.
import java.io.IOException;
(2) main 클래스 옆에 throws IOException를 작성한다.
public static void main(String[] args) throws IOException {}
Read한 데이터는 Line단위로만 나눠지기에 공백단위로 데이터를 가공하려면 따로 작업을 해주어야하는데, 위의 두가지 방법이 대표적이다.
첫번째 방법으로는 StringTokenizer에 nextToken()함수를 쓰면 readLine()을 통해 입력받은 값을 공백단위로 구분하여 순서대로 호출할 수 있다.
두번째 방법으로는 String.split()함수를 활용하여 배열에 공백단위로 끊어서 데이터를 넣고 사용하는 방식이다..
*BufferedWriter
BufferedWriter 의 경우 버퍼를 잡아 놓았기 때문에 반드시 flush() / close() 를 반드시 호출해 주어 뒤처리를 해주어야 한다.
그리고 bw.write에는 System.out.println();과 같이 자동개행기능이 없기때문에 개행을 해주어야할 경우에는 \n를 통해 따로 처리해주어야 한다.
- 오늘의 회고
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
백준 11719번 그대로 출력하기 2는 브론즈 1 난이도의 구현, 그리고 문자열 문제이다.
- 어떻게 해결했는지
이 문제는 입력받는 것을 그대로 출력해주면 된다. 이 문제를 조금 어렵게 느낄 수 있는 이유는 아마도 입력이 종료되는 기준이 없기 때문일 것이다. 보통은 입력으로 몇 줄이 들어온다, 이렇게 문제에 나와 있는데 이 문제는 계속 입력이 들어오는 것이다. 따라서 이 문제에서는 while-loop을 이용해서 입력받은 것이 없으면 loop을 종료시키는 식으로 해주면 된다. 자바에서는 다음과 같이 쓰면 된다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s;
while ((s = br.readLine()) != null) {
do something
}
- 무엇을 새롭게 알았는지
s = br.readLine()) != null
'Study > 코딩스터디_TIL' 카테고리의 다른 글
[JAVA 스터디] 250121 해시 알고리즘 (0) | 2025.01.21 |
---|---|
[JAVA 스터디] 250120 hash 함수 (1) | 2025.01.20 |
[JAVA 스터디] 250116 BufferedReader (1) | 2025.01.16 |
[JAVA 스터디] 250115 Scanner (0) | 2025.01.15 |
[JAVA 스터디] 250113 Math.random - 랜덤으로 난수 생성하기 (0) | 2025.01.13 |