지금까지 BuffereReader를 사용해서 입력을 받고 있었는데, 백준에서 다른 코드들을 보니 System.in.read()를 사용하는 사람들이 많았다.
특히 아스키코드를 이용하려 할 때 유용할 것 같아 정리해보았다!
먼저 BufferedReader를 활용해서 백준 11654번을 풀었다.
- BufferedReader를 사용하면, String 값으로 읽어들인다. 따라서 입력값을 읽은 후 char 형으로 변환하기 위해
charAt(인덱스)
를 사용했다.- char타입의 값을 int타입으로 변환하기 위해 (int)를 붙여주었다.
import java.io.*;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
char c; // 입력 문자 (char)
c = br.readLine().charAt(0); // String으로 입력된 단일 문자를 char로 변경
br.close();
// (int)를 붙여 아스키코드 값으로 변환해서 출력
System.out.println( (int)c );
}
}
그런데, 다른 유저들의 코드를 보니 매우 짧고 간결했다. 모두 System.in.read()를 사용하고 있었다.
- BuffereReader처럼 버퍼 사용! => 효율적 & 오류 처리 필수적
- 문자 '하나'를 char 타입으로 입력받으며, 아스키 코드를 int 값으로 변환하여 가져온다.
[참고] String은 문자열이고, char은 문자열 '하나'이다.
import java.io.*;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
int input = System.in.read(); // System.in.read()로 문자 하나 입력 받기
// 아스키코드로 저장됨
System.out.println(input); // 출력
}
}