[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() 호출 (자원 반납)
'언어 > Java' 카테고리의 다른 글
| [Java] 제어문 - 조건문(if else / switch case), 반복문(for / while / do while), 탈출문(break / continue / return) (0) | 2026.02.25 |
|---|---|
| [Java] 연산자와 2의 보수 계산 (0) | 2026.02.24 |
| [Java] 자료형과 형변환 - 기본형과 참조형, instanceof() (0) | 2026.02.24 |
| [Java] 변수와 메서드, 클래스 (0) | 2026.02.24 |
| [Java] 개요 및 개발환경 구성 (0) | 2026.02.23 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자