삶 가운데 남긴 기록 AACII.TISTORY.COM
자바 콘솔 입출력 본문
Console
키보드로 입력받고, 화면으로 출력하는 소프트웨어.
System.in
import java.io.IOException;
import java.io.InputStream;
public class SystemInEx {
public static void main(String[] args) throws IOException {
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;
}
}
}
InputStream의 read()메소드는 1바이트씩 읽기 때문에 아스키 코드는 잘 읽지만 한글 같은 2바이트 이상 문자는 읽을 수 없습니다.
그래서 입력된 내용을 byte array로 받아서 이 배열을 이용해 String 객체를 생성하면 됩니다.
변환할 문자열은 마지막 2byte를 제외시키는데 마지막 2바이트는 엔터키이므로 캐리지리턴(13)+라인피드(10)를 제외시키기 위함입니다.
import java.io.IOException;
import java.io.InputStream;
public class SystemInEx2 {
public static void main(String[] args) throws IOException {
InputStream is = System.in;
byte[] data = new byte[100];
System.out.print("이름: ");
int nameBytes = is.read(data);
String name = new String(data, 0, nameBytes-2);
System.out.println("입력한 이름: "+name);
}
}
System.out
import java.io.IOException;
import java.io.OutputStream;
public class SystemOutEx {
public static void main(String[] args) throws IOException {
OutputStream os = System.out;
for(byte b=48; b<58;b++) {
os.write(b); //숫자 출력
}
os.write(10); //라인피드, 다음행으로 넘어간다.
for(byte b=97; b<123;b++) {
os.write(b); //알파벳 출력
}
os.write(10);
String hangul = "한글로된 글자를 아웃풋 스트림에 출력합니다.";
//byte array로 변환
byte[] hangulBytes = hangul.getBytes();
os.write(hangulBytes);
os.flush(); //outputStream 버퍼를 비우고 출력
}
}
Scanner
import java.util.Scanner;
public class ConsoleEx {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("문자열 입력>");
String inputString = scanner.nextLine();
System.out.println(inputString);
System.out.println();
System.out.print("정수 입력>");
int inputInt = scanner.nextInt();
System.out.println(inputInt);
System.out.println();
System.out.print("실수 입력>");
double inputDouble = scanner.nextDouble();
System.out.println(inputDouble);
}
}
728x90
'DEV&OPS > Java' 카테고리의 다른 글
입출력 보조 스트림 (0) | 2022.05.19 |
---|---|
파일 입출력 (0) | 2022.05.18 |
자바 stream (0) | 2022.05.17 |
Stack과 Queue (0) | 2022.05.10 |
컬랙션 검색, 병렬처리, 동기화 (0) | 2022.05.09 |