System.in 필드
: InputStream 타입의 출력 스트림 → InputStream 타입으로 타입 변환 가능
InputStream is = System.in;
read() 메소드
: 키보드로부터 어떤 키가 입력되었는지 확인
: 리턴된 int값엔 아스키코드가 들어있음
int asciiCode = is.read();
숫자로된 아스키 코드 대신에 키보드에서 입력한 문자를 직접 얻고 싶다면 read() 메소드로 읽은 아스키 코드를 char로 타입 변환하면 된다.
char inputChar = (char) is.read();
char inputChar = (char) 97;
inputChar = 'a' 가 된다.
콘솔에서 입력한 번호 알아내기
package sec03.exam01_system_in_out_YJ;
import java.io.IOException;
import java.io.InputStream;
public class SystemInExample1 {
public static void main(String[] args) throws Exception {
System.out.println("==== 메뉴 ====");
System.out.println("1. 예금 조회");
System.out.println("2. 예금 출금");
System.out.println("3. 예금 입금");
System.out.println("4. 종료 하기");
System.out.print("메뉴를 선택하세요> ");
InputStream is = System.in; //키보드 입력 스트림 얻기
char inputChar = (char) is.read(); //아스키 코드를 읽고 문자로 리턴
switch(inputChar) {
case '1' :
System.out.println("예금 조회를 선택하셨습니다.");
break;
case '2' :
System.out.println("예금 출금을 선택하셨습니다.");
break;
case '3' :
System.out.println("예금 입금을 선택하셨습니다.");
break;
case '4' :
System.out.println("종료를 선택하셨습니다.");
break;
}
}
}
==== 메뉴 ====
1. 예금 조회
2. 예금 출금
3. 예금 입금
4. 종료 하기
메뉴를 선택하세요> 3
예금 입금을 선택하셨습니다.
키보드로 입력된 한글을 얻기 위해서는 우선 read(byte[] b)나 read(byte[] b, int off, int len) 메소드로 전체 입력된 내용을 바이트 배열로 받고, 이 배열을 이용해서 String 객체를 생성하면 된다.
메소드를 사용하기 전에 우선 키보드에서 입력한 문자를 저장할 바이트 배열을 만들어야 한다.
콘솔에서 입력한 한글 알아내기
package sec03.exam01_system_in_out_YJ;
import java.io.IOException;
import java.io.InputStream;
public class SystemInExample2 {
public static void main(String[] args) throws Exception {
InputStream is = System.in;
byte[] datas = new byte[100];
System.out.print("이름: ");
int nameBytes = is.read(datas);
String name = new String(datas, 0, nameBytes-2); //끝에 2 바이트는 Enter키에 해당하는 캐리지 리턴(13)과 라인 피드(10)이므로 문자열에서 제외시킴
System.out.print("하고 싶은 말: ");
int commentBytes = is.read(datas);
String comment = new String(datas, 0, nameBytes-2); //끝에 2 바이트는 Enter키에 해당하는 캐리지 리턴(13)과 라인 피드(10)이므로 문자열에서 제외시킴
System.out.println("입력한 이름: " + name);
System.out.println("입력한 하고 싶은 말: " + comment);
}
}
이름: 코스모
하고 싶은 말: Hello
입력한 이름: 코스모
입력한 하고 싶은 말: Hello
'Java > 18. IO 기반 입출력 및 네트워킹' 카테고리의 다른 글
Day 23 : 콘솔 입출력 - Console 클래스 (0) | 2021.11.18 |
---|---|
Day 23 : 콘솔 입출력 - System.out 필드 (0) | 2021.11.18 |
Day 23 : 입력 스트림과 출력 스트림 - Writer (0) | 2021.11.18 |
Day 23 : 입력 스트림과 출력 스트림 - Reader (0) | 2021.11.18 |
Day 23 : 입력 스트림과 출력 스트림 - OutputStream (0) | 2021.11.18 |