표준 입력

표준 입력 스트림

이 문서에서는 표준 입력 스트림(System.in)을 이용하는 방법에 대해 다룬다.

표준 입력이란

일반적인 PC 환경에서 사용자가 컴퓨터에 입력을 수행할 수 있는 방법은 다음과 같은 것들이 있다.

  • 마우스를 이용한 명령 전달

  • 키보드를 이용한 값 전달

  • 마이크를 이용한 소리 전달

  • 카메라를 이용한 화면 전달

  • 스캐너를 이용한 문서 전달

  • 파일을 실행하여 내용 전달

  • 메신저 등을 통한 데이터 전달 등

콘솔 기반의 프로그래밍에서는 키보드를 통한 입력을 필수 요소로 간주하여 System.in이라는 이름으로 관리하며 임의로 수정하거나 변경할 수 없도록 한다. 그 외 다른 장치의 입력이 필요한 경우에는 추가적인 통로를 만들어야 처리할 수 있다.

표준 입력 명령

표준 입력 명령은 다음과 같이 존재한다.

  • System.in.read()

사용자가 입력한 값들을 배열이라는 것을 모르는 한 한 글자씩 받을 수 있도록 되어 있으며, 이는 ASCII 코드 기반이기 때문에 유니코드는 받을 수 없도록 되어 있다.

즉, 사용자가 hello라는 값을 입력한다면 다음과 같이 받을 수 있다.

여기서 중요한 점은 사용자가 몇 글자를 입력할 지 모른다는 것이다. 따라서 몇 번의 명령을 사용해야 하는지와 변수가 몇 개 필요한지에 대해서 파악할 수 없다. 또한 엔터스페이스와 같은 값들도 ascii 코드를 가지고 있기 때문에 입력의 한 부분을 차지하며, 이를 처리하는 것은 꽤 손이 많이 가는 작업이다.

IOException

System.in.read를 사용하려고 작성하면 오류가 발생하는 것을 볼 수 있다. 이는 예외처리를 하지 않아서 발생하는 문제이며, 아직 배우는 단계가 아니기 때문에 간단히 요약하면 입력이 안될 수 있는 상황에 대한 처리를 하지 않았기 때문이다. 우선 main 메소드에 다음과 같이 추가하여 현재는 문제가 생겨도 처리하지 않을 것임을 명시한다.

또한 IOExceptionjava.io라는 패키지에 존재하기 때문에 다음의 준비 코드도 필요하다.

정리하면 다음과 같은 코드가 있어야 입력을 받을 수 있다.

결론

표준 입력은 생각보다 난이도가 높은 작업이기 때문에 직접 처리하기에는 알아야할 부분들이 많다. 따라서 자바에 존재하는 도구들 중 다음과 같은 것들을 사용하여 좀 더 수월하게 입력을 수행할 수 있다.

  • java.util.Scanner

  • java.io.BufferedReader

Last updated