Java/패스트캠퍼스

표준 입출력 스트림

hs_developer 2022. 6. 14. 21:24

System 클래스의 표준 입출력 멤버

public class System
{
    public static PrintStream out;
    public static InputStream in;
    public static PrintStream err;
}

 

System.out 표준 출력(모니터) 스트림
System.out.println("출력 메세지");
System.in 표준 입력(키보드) 스트림
int d = System.in.read() -> 한 바이트 읽기
System.err 표준 에러 출력(모니터) 스트림
System.err.println("에러 메세지");

 

 

System.in 예제

 

1.

import java.io.IOException;

public class SystemInTest {

	public static void main(String[] args) {
		
		System.out.println("알파벳 하나를 쓰고 [ENTER]를 누르세요");
		
		int i; // 값을 받을 변수
		
		try
		{
			i = System.in.read();
			System.out.println(i);
			System.out.println((char)i);
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
	}
}
알파벳 하나를 쓰고 [ENTER]를 누르세요
A
65
A

 

2.

public class SystemlnTest2 {

	public static void main(String[] args) {
		
		System.out.println("알파벳 여러 개를 쓰고 [ENTER]를 누르세요.");
		
		int i;
		
		try
		{
			while(( i=System.in.read() ) != '\n') // i에서 읽은 값이 \n이 아닐 때까지
			{
				System.out.print((char)i);
			}
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
	}
}
알파벳 여러 개를 쓰고 [ENTER]를 누르세요.
dfafd
dfafd
알파벳 여러 개를 쓰고 [ENTER]를 누르세요.
안녕하세요
¾?³???¼¼¿? // 한글은 깨진다, 한 바이트씩 밖에 못 읽어서

 

 

3. 한글 안 깨지게 하는 InputStreamReader 함수

import java.io.IOException;
import java.io.InputStreamReader;

public class SystemlnTest2 {

	public static void main(String[] args) {
		
		System.out.println("알파벳 여러 개를 쓰고 [ENTER]를 누르세요.");
		
		int i;
		
		try
		{
			InputStreamReader irs = new InputStreamReader(System.in); // 바이트 -> 문자열 변환
			while(( i=irs.read() ) != '\n') // i에서 읽은 값이 \n이 아닐 때까지
			{
				System.out.print((char)i);
			}
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
	}
}
알파벳 여러 개를 쓰고 [ENTER]를 누르세요.
안녕
안녕