[문법] 입출력 - Java

yseo14·2024년 3월 11일

코딩테스트 대비

목록 보기
1/88

입력

1. scanner()

가장 기본적인 입력 클래스이다.

import java.util.Scanner
// 사용하기 위해 Scanner 클래스가 존재하는 java.util 패키지를 추가한다. 

Scanner in = new Scanner(System.in);
// 객체를 생성해서 사용

Scanner의 입력 메서드는 다음과 같은 종류가 있다.

in.nextByte();  //byte형 입력 및 린턴
in.nextShort(); //short형 입력 및 리턴
in.nextInt();   //int형 입력 및 리턴
in.nextLong();

in.nextFloat();
in.nextDouble();

in.nextBoolean();

in.next(); // String 형, 공백 기준으로 한 단어를 읽는다. 
in.nextLine() // String형, 개행을 기준으로 한 줄을 읽는다. 

2. BufferedReader

위에서 알아본 Scanner과 출력 시 일반적으로 사용되는 System.out.println(””)은 시간 소모가 심하다는 단점이 존재한다.

따라서, BufferReader를 사용하는 것이 Scanner를 사용하는 것보다 빠른 성능을 보여준다.

BufferedReader br = new BufferedReader(new InputStream(System.in));
String input = br.readLine();

//하지만 BufferReader는 정수를 입력 받는 메서드를 제공하지 않기 때문에 직접 변환이 필요하다. 
int a = Integer.parseInt(br.readLine());

StringTokenizer

문제를 풀다보면 입력이 아래처럼 주어지는 경우가 많다.

이런 경우에 StringTokenizer를 사용하면 빠르게 처리할 수 있다.

BufferedReader br = new BufferReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());

int a = Integer.parseInt(st.nextToken);
int b = Integer.parseInt(st.nextToken);

출력

BufferWriter

import java.io.BufferedWriter;

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("hello bw"); // 괄호 안의 값을 출력한다. 
bw.newLine(); // 줄바꿈
bw.flush(); // 버퍼에 남아있는 데이터를 비운 후, 해당 데이터를 출력한다. 
bw.close(); // 버퍼에 남아있는 데이터를 비운 후, 해당 데이터를 출력한 뒤 스트림이 닫힌다. 

💡 BufferedWriter를 사용한 후에는 반드시 flush() 혹은 close()를 작성해줘야한다. (버퍼에 남아있는 데이터를 비우기 위해)

⚠️ BufferedWirter는 문자열을 기반으로 데이터를 쓰기 때문에 정수는 바로 쓰면 이를 문자열로 변환하려고 하면서 이상한 데이터가 들어가게 된다.

profile
like the water flowing

0개의 댓글