본문 바로가기
JAVA/입력함수

System.in.read();

by pms93 2022. 7. 15.
package inputs;

import java.io.IOException;

public class SystemInRead {
	
	public static void main(String[] args) throws IOException {
	
		// System.in.read()
		// - 데이터 기본 반환형은 int
		// - 키보드 한번의 입력만 받을 수 있다.(권장x)
		// - 예외를 관리해줘야 한다.
		// -  전가(throws, 처리(개발자(나)직접 처리 : try-catch), 고의로 발생(throw)
		int data;
		System.out.println("저장할 단일문자 입력 : ");
		data = System.in.read();
		// -> 12번째 코드에서 오류가 발생하고 있다.
		// 예외를 관리(전가)하기 위해 main method에 throws IOExeption을 추가해준다.
		
		System.out.println(data);
		// System.in.read의 기본 반환형은 int이므로 단일문자 'a'가 아닌 Ascii코드의 97로 출력되고 있다.
		// 원하는 단일문자로 출력하기 위해서는 데이터의 형변환이 필요하다.
		char convertData = (char)data;
		System.out.println("데이터 최초 저장시 : " + data);
		System.out.println("데이터 형변환 후 : " + convertData);
		System.in.read();System.in.read();
		
		// System.in.read()의 여러번 호출을 통해 다수의 데이터 입력, 저장을 시도할 시 enter키도 데이터로 인식하는 문제가 발생한다.
		// enter = CR + LF
		// CR과 LF가 다음 System.in.read()호출 시 변수에 저장되지 않도록 공백에서 처리해줄 필요가 있다.
		int data1, data2, data3;
		char convertData1, convertData2, convertData3;
		System.out.println("첫번째 데이터 입력 : ");
		data1 = System.in.read();
		System.in.read();System.in.read(); // enter(CR + LF)키 를 공백에서 처리해주는 과정
		convertData1 = (char)data1;
		System.out.println("첫번째 데이터 출력 : " + data1);
		System.out.println("형변환 후 데이터 출력 : " + convertData1);
		
		System.out.println("두번째 데이터 입력 : ");
		data2 = System.in.read();
		System.in.read();System.in.read();
		convertData2 = (char)data2;
		System.out.println("두번째 데이터 출력 : " + data2);
		System.out.println("형변환 후 데이터 출력 : " + convertData2);
		
		System.out.println("세번째 데이터 입력 : ");
		data3 = System.in.read();
		System.in.read();System.in.read();
		convertData3 = (char)data3;
		System.out.println("세번째 데이터 출력 : " + data3);
		System.out.println("형변환 후 데이터 출력 : " + convertData3);
		
	}
}

'JAVA > 입력함수' 카테고리의 다른 글

입력함수 예제  (0) 2022.07.18
Scanner  (0) 2022.07.18