알고리즘 문제를 풀다보면 입력을 받아서 정답을 출력하게 작성해야하는데 그때 사용할 수 있는 Scanner와 BufferedReader를 이용한 입출력을 정리해보려고 한다.
먼저 속도적인 면으로는 BufferedReader가 Scaaner에 비해 훨씬 빠른데, 보통 JAVA를 처음 접할떄 입력은 Scanner로 배우기 때문에 조금은 생소할수도 있다. 각설하고 코드로 확인해 보면 다음과 같이 사용할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import java.io.*; import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { new Main().scanner(); new Main().writer(); } /** * BufferedReader와 BufferedWriter를 이용한 입출력 * 속도면에서 장점이 있음 * @throws Exception */ public void writer() throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String out2 = reader.readLine(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); writer.write(out2); // writer.newLine(); // 줄바꿈 // BufferedWriter는 출력이 종료되면 반드시 아래의 작업을 해줘야함, 안할시 메모리 누수발생 writer.flush(); // writer에 남은데이터 모두출력 writer.close(); // writer 닫기 } /** * Scaner을 이용한 입력과 출력 * 데이터 가공이 편리한 장점이있음 */ public void scanner() { Scanner sc = new Scanner(System.in); String out = sc.next(); System.out.println(out); } } | cs |
Scanner가 BufferedReader가 느린 이유는 여러가지 값검증을 하고있기 때문에 BufferedReader보다 느린건 당연하나, 값을 입력받아 사용할 때는 Scanner쪽이 더 유리하다. 허나 속도가 중요하다면 BufferedReader와 Writer을 사용하는 것이 좋아보인다. 또 위에 사용한 메소드 외에 내장된 여러가지 메소드가 있으나, 글 내용만 길어질 것 같아 아래 API문서를 참조하여 필요할 때 보는것도 좋을 것 같다.
'JAVA' 카테고리의 다른 글
String 배열을 다른자료형 배열로 변경하는 방법 (0) | 2020.12.31 |
---|---|
JAVA System.in에서의 EOF(End of File) 컨트롤 (0) | 2020.12.23 |
JAVA에서 리스트안의 원소를 중복제거하는 방법? (0) | 2020.11.04 |
JAVA에서 ..parameter???? (가변인자) (0) | 2020.08.25 |
HttpResponse와 Unirest를 이용한 외부 데이터 요청 (0) | 2020.06.17 |