물멍~~하는 인생

[Java] - 자바 입력 System.in.read() 본문

Java

[Java] - 자바 입력 System.in.read()

Wardoc 2020. 4. 10. 14:16

System.in.read()


콘솔창에서 사용자로부터 값을 입력받는 함수이다.

기본 입력값은 ASCII 값 형태이다.




예제 - 숫자를 입력받고 출력해보자


import java.io.IOException;

public class Main {
	public static void main(String[] a) throws IOException {
		int b = System.in.read();	
		System.out.println(b);
	}
}
1

49


1을 입력하면 값은 1이 아니라 49가 된다.

System.in.read()로 입력받은 것은 ASCII 문자 형식으로 받기 때문이다.

내가 입력한 숫자로 받고 싶으면, '0'이나 '0'의 ASCII값인 48을 빼주면 된다.


int b = System.in.read()-'0';	
System.out.println(b);

1

1





예제 - 배열로 입력받자

byte[] b = new byte[3];
System.in.read(b);
System.out.println("b[0]:"+b[0]+",b[1]:"+b[1]+",b[2]"+b[2]);
123

b[0]:49,b[1]:50,b[2]51


문자하나당 배열하나에 값이 들어가는 것을 볼 수 있다.

참고로 띄어쓰기는 1byte, 줄바꿈은 2byte이다.



System.in.read()로 숫자를 입력받을 때에는 한자리에 적합하고, 두자리 이상의 숫자를 입력받을때에는 부적합하다.

1 byte당 하나의 숫자만 입력받기 때문이다.

그러니 두자리 이상의 숫자를 입력받고 싶을때에는

Scanner를 이용하는게 맞다.