표준 입력
표준 입력 스트림
이 문서에서는 표준 입력 스트림(System.in
)을 이용하는 방법에 대해 다룬다.
표준 입력이란
일반적인 PC 환경에서 사용자가 컴퓨터에 입력을 수행할 수 있는 방법은 다음과 같은 것들이 있다.
마우스를 이용한 명령 전달
키보드를 이용한 값 전달
마이크를 이용한 소리 전달
카메라를 이용한 화면 전달
스캐너를 이용한 문서 전달
파일을 실행하여 내용 전달
메신저 등을 통한 데이터 전달 등
콘솔
기반의 프로그래밍에서는 키보드를 통한 입력을 필수 요소로 간주하여 System.in
이라는 이름으로 관리하며 임의로 수정하거나 변경할 수 없도록 한다. 그 외 다른 장치의 입력이 필요한 경우에는 추가적인 통로를 만들어야 처리할 수 있다.
표준 입력 명령
표준 입력 명령은 다음과 같이 존재한다.
System.in.read()
사용자가 입력한 값들을 배열
이라는 것을 모르는 한 한 글자
씩 받을 수 있도록 되어 있으며, 이는 ASCII 코드 기반이기 때문에 유니코드는 받을 수 없도록 되어 있다.
즉, 사용자가 hello
라는 값을 입력한다면 다음과 같이 받을 수 있다.
여기서 중요한 점은 사용자가 몇 글자를 입력할 지 모른다는 것이다. 따라서 몇 번의 명령을 사용해야 하는지와 변수가 몇 개 필요한지에 대해서 파악할 수 없다. 또한 엔터
나 스페이스
와 같은 값들도 ascii 코드를 가지고 있기 때문에 입력의 한 부분을 차지하며, 이를 처리하는 것은 꽤 손이 많이 가는 작업이다.
IOException
System.in.read
를 사용하려고 작성하면 오류가 발생하는 것을 볼 수 있다. 이는 예외처리
를 하지 않아서 발생하는 문제이며, 아직 배우는 단계가 아니기 때문에 간단히 요약하면 입력이 안될 수 있는 상황에 대한 처리를 하지 않았기 때문이다. 우선 main 메소드에 다음과 같이 추가하여 현재는 문제가 생겨도 처리하지 않을 것
임을 명시한다.
또한 IOException
은 java.io
라는 패키지에 존재하기 때문에 다음의 준비 코드도 필요하다.
정리하면 다음과 같은 코드가 있어야 입력을 받을 수 있다.
결론
표준 입력은 생각보다 난이도가 높은 작업이기 때문에 직접 처리하기에는 알아야할 부분들이 많다. 따라서 자바에 존재하는 도구들 중 다음과 같은 것들을 사용하여 좀 더 수월하게 입력을 수행할 수 있다.
java.util.Scanner
java.io.BufferedReader
Last updated