[JAVA] 자바 입력
▣자바 입력 |
■ 지난 포스팅에서 '아스키코드값'등 숫자의 기본 입력(0~9)에 대해서 알아봤었는데요. 이번에는 연속해서 입력을 받을때 발생하는 문제에 대해서 알아보도록 하겠습니다.
자바 기본입력 : http://kd3302.tistory.com/101
■ 먼저 예제를 하나 살펴보겠습니다.
■ 첫번째로 문자를 입력받고 두번째로 숫자를 입력받기 위해서 위와 같이 코딩을 했습니다. 문제 없는 코딩같은데 결과는 뜻하지 않게 나와버립니다. 문자를 입력하는 구문에 'a'를 입력하고 '엔터'를 눌렀는데....숫자를 입력받지 않고, 바로 '-35'라는 숫자가 출력이 되버렸습니다.
■ 결과가 이렇게 되는 이유는 JVM은 '엔터' 까지도 하나의 입력으로 받아들이기 때문입니다. '엔터'는 "\r"과 "\n" 두개의 키가 설정되어 있습니다. 그렇기 때문에 첫번째 'a'를 입력하고 엔터를 누르면 "\r"과"\n"이 차례대로 입력이 되버리는 것입니다. 여기서 '-35'가 출력이 되는 이유는 "\r"의 아스키 코드값이 '13'인데 '-48'을 했기 때문입니다. 이런 문제를 해결하기 위해서는 엔터를 누를때 입력되는 두개의 값을 System.in.read()를 이용해서 처리해버리면 됩니다.
■ 엔터의 두개 값을 System.in.read()이 처리해서 제대로 입력을 받는걸 확인할 수 있습니다. 좀더 확실히 알아보기 위해서 다음과 같은 예제를 하나 더 살펴보겠습니다.
■ 위 예제에서 'ab'문자를 연속으로 두개 입력을 하였습니다. 결과값을 보면 a와 b는 자신들의 아스키 코드값이 출력이 된걸 알 수 있습니다. 그런데 c와 d의 값은 무었일까요? 엔터의 값인 "\r"과 "\n"의 값이 입력이 된것입니다. 정확하게 이해를 하기 위해서 다음과 'abc'를 입력해 보았습니다.
■ 'abc'의 아스키코드값이 차례대로 입력이 되고 마지막의 'd'만 엔터값의 첫번째인 "\r"의 값이 입력이 된걸 확인 할 수 있습니다. 이렇게 해서 "Enter"키가 프로그램에 미치는 영향에 대해서 알아봤습니다. 지금까지 살펴본 내용은 하나의 문자를 입력받은 내용입니다. 다음 포스팅에서는 "abcde..." " 홍길동" "12345.." 등과 같이 문자들을 한꺼번에 입력받는 방법에 대해서 알아보도록 하겠습니다.