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/입력함수