Recent Posts
Recent Comments
Link
12-04 00:16
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

자바 콘솔 입출력 본문

DEV&OPS/Java

자바 콘솔 입출력

ALEPH.GEM 2022. 5. 17. 17:44

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