우와한 개발자

[Java] 입력과 출력 - System.out 출력 / System.in 입력 / Scanner 입력

by 우와한개발자

[ 입출력 ]

  • 컴퓨터는 기본적으로 키보드로 입력받고, 모니터로 화면을 출력한다.

 

1. 출력

  • System.out.print() : 화면에 정보 출력
  • System.out.println() : 화면에 정보 출력 후 개행
  • System.out.printf() : 형식화한 문자열을 화면에 출력

1) printf()

  • System.out.printf(String format, Object…args)
  • … : 가변인자
  • 포맷형식
%[arg_index$][flags][width][.precision]conversion-character
  • arg_index : 인수의 순서 지정, 숫자$ 형식 (예: 1$는 첫 번째 인수)
  • flags : 출력할 값보다 자리수가 더 길 때 사용. 기본 오른쪽 정렬, -는 왼쪽 정렬, 숫자 출력 시 0은 공백을 0으로 채움 (문자열에는 0 사용 불가)
  • width : 전체 자리수. 실수는 소수점 포함
  • .precision : 소수점 자리수 지정. 문자열에 사용 시 앞의 N개 문자만 출력
  • conversion-character : 변환 문자 (문자열=s/S, 정수=d, 실수=f, 논리값=b/B, 문자=c/C, 날짜/시간=t)
  • % 자체를 출력하려면 %% 사용

 

2. 입력

 

1) System.in.read()

  • System.in : 표준입력장치(키보드)를 의미하는 InputStream 타입 변수
  • read() : 입력 스트림으로부터 1바이트를 읽어 반환
  • 1바이트만 읽으므로 한글(2바이트) 입력 불가
  • 한글 입력 받으려면 InputStreamReader로 바이트→문자 단위 변환 필요
  • 문자열 입력 : read(byte[] buffer) → 입력한 문자 수 반환, 문자열은 배열에 저장
  • 줄 단위 입력 : InputStreamReader + BufferedReader의 readLine() 사용

 

2) Scanner (권장)

  • System.in.read()보다 편리하게 원하는 자료형으로 바로 읽을 수 있음
  • java.util 패키지에 있으므로 import 필요
  • 생성 : Scanner scanner = new Scanner(System.in);
  • 주요 메서드
    • nextInt(), nextDouble(), nextFloat(), nextLong() 등 : 해당 자료형으로 반환
    • next() : 공백/탭/엔터 기준으로 한 토큰을 String으로 반환
    • nextLine() : 엔터 입력까지 한 줄을 String으로 반환
    •  
⚠️ nextInt() 등 사용 후 nextLine() 쓰면 버퍼에 남은 엔터가 먹혀 이름이 입력 안 되는 문제 발생 → 해결 : nextLine()으로 통일하고 Integer.parseInt()로 형변환
  • 사용 후 scanner.close() 호출 (자원 반납)

블로그의 정보

우와한개발자 님의 블로그

우와한개발자

활동하기