콘솔 출력
자바에서 표준 출력을 위해 사용하는 주요 메서드는 다음과 같다
System.out.printlnSystem.out.printSystem.out.printf
System.out.println
콘솔 출력을 위한 가장 기본적인 메서드이다
Systme.out: 자바 언어의 일부인 객체이다
println: System.out 객체에 의해 호출되는 메서드로, 콘솔 출력을 수행한다
- 출력할 데이터는 괄호 안에 인자(argument)로 전달된다
- 둘 이상의 항목을 연결하여 출력할 때는 더하기 기호(
+)를 사용한다 println은 호출될 때마다 출력 끝에 줄 바꿈(new line)을 추가한다- 예시:
System.out.println("The answer is " + 42);
print와 차이점은 줄 바꿈 여부에서 차이가 난다
printf를 이용한 형식화된 출력(Formatting Output)
특정 형식에 맞춰 출력할 수 있는 메서드이다
특징:
printf는print메서드와 유사하게 출력 후 줄 바꿈을 하지 않는다- C 언어의
printf함수와 매우 유사한 동작 방식을 가진다. 즉, 여러 인자를 받을 수 있다 - 인자 구성:
- 형식 문자열(format string): 첫 번째 인자는 항상 형식 문자열이며, 여기에는 나머지 인자들을 위한 하나 이상의 형식 지정자(format specifiers)가 포함된다
- 출력 값: 첫 번째 인자를 제외한 나머지 모든 인자들은 실제로 화면에 출력될 값들이다
형식 지정자의 구성
형식 지정자 %6.2f를 예로 들어 각 부분의 의미를 분석해본다
- %: 형식 지정자의 시작을 알린다
- 6(전체 너비): 출력될 전체 칸수를 지정한다. 예시에서는 6칸을 확보하며, 데이터가 이보다 적으면 왼쪽에 공백이 생겨 칸수를 맞춘다(우측 정렬)
- .2(소수점 자릿수): 소수점 아래로 정확히 2자리까지 표시하도록 지정한다
- f(변환 문자): 데이터의 타입을 지정한다.
f는 부동 소수점(Floating point) 숫자를 의미하며 지정자의 끝을 나타낸다
double price = 19.8;
System.out.printf("%6.2f", price);price = 19.8일 때, "%6.2f"는 19.80 (앞에 공백 포함 총 6칸)으로 출력된다
우측 정렬 및 좌측 정렬
printf 내에서 데이터가 정렬되는 방향을 제어할 수 있다
우측 정렬
- 기본값이다.
%8.2f와 같이 작성하면 전체 8칸 중 오른쪽에 데이터가 붙고, 왼쪽에 공백이 생겨 칸수를 맞춘다
좌측 정렬
- 숫자 앞에 마이너스 기호(
-)를 붙여%-8.2f와 같이 작성한다. 이 경우 데이터가 왼쪽에 붙고, 오른쪽에 공백이 채워진다
printf에서 여러 개의 인자 사용하기
printf문을 사용하면 여러 개의 변수를 지정된 서식에 맞춰 한 번에 출력할 수 있다
코드 예시
double price = 19.8;
String name = "magic apple";
// 세 개의 인자를 가진 printf 문
System.out.printf("$%6.2f for each %s.", price, name);
System.out.println();
System.out.println("Wow");- 출력 결과:
$ 19.80 for each magic apple.
Wow- 첫 번째 인자: 출력 형식을 결정하는 형식 문자열(Format String)이다. 여기에는 두 개의 서식 지정자(
%6.2f,%s)가 포함되어 있다 - 서식 지정자의 매칭: 서식 지정자는 뒤따라오는 인자들과 순서대로 대응된다
%6.2fprice(실수형)%sname(문자열)
- %6.2f의 의미: 전체 6자리를 차지하며, 소수점 아래 2자리까지 표시하라는 의미이다(앞부분의 빈 공간은 공백으로 채워짐)
System.out.prinf 서식 지정자 정리
출력하려는 데이터의 타입에 따라 적절한 변환 문자를 사용해야 한다
| 변환 문자 | 출력 타입 | 예시 |
|---|---|---|
| d | 10진수 정수 (Decimal integer) | %5d, %d |
| f | 고정 소수점 부동 소수점 (Fixed-point floating point) | %6.2f, %f |
| e | 지수 표기법 부동 소수점 (E-notation floating point) | %8.3e, %e |
| g | 일반 부동 소수점 (Java가 상황에 따라 f 또는 e 선택) | %8.3g, %g |
| s | 문자열 (String) | %12s, %s |
| c | 문자 (Character) | %2c, %c |
콘솔 입력
자바에서 표준 입력을 위해 사용하는 주요 방법는 다음과 같다
- 패키지 및 클래스
- Scanner 클래스
- 주요 메서드
nextInt(): 정수(int)를 입력받을 때 사용nextDouble(): 실수(double)를 입력받을 때 사용next(): 공백 전까지의 단어(String) 하나를 입력받을 때 사용nextLine(): 한 줄 전체(String)를 입력받을 때 사용
패키지와 클래스 임포트(Importing Packages and Classes)
자바 라이브러리를 활용하기 위해 클래스를 가져오는 방법이다
패키지(Packages)
자바에서는 라이브러리를 패키지라고 부른다. 패키지는 어떤 프로그램에서든 쉽게 접근할 수 있도록 정리되어 저장된 클래스들의 집합이다
import 문 사용법
특정 패키지에 속한 클래스를 사용하려면 import문을 사용하여 해당 클래스를 프로그램으로 불러와야 한다
- 특정 클래스만 가져오기:
import pakageName.pakageClass;
- 패키지 내의 모든 클래스 가져오기
import pakageName.*;
자동 임포트(javaa.lang)
java.lang 패키지에 포함된 클래스들은 모든 자바 프로그램에 자동으로 임포트된다. 따라서 System이나 String 같은 클래스들은 별도의 import문 없이도 바로 사용할 수 있다
Scanner 클래스
자바에서 키보드 입력을 가장 간단하게 처리하는 방법은 Scanner 클래스를 사용하는 것이다. 스캐너 클래스를 사용하려면 소스 코드 파일 시작 부분에 다음 문자을 반드시 포함해야 한다
import java.util.Scanner;
Scanner 객체 생성
클래스를 사용하기 위해서는 먼저 해당 클래스의 객체를 생성해야 한다
Scanner Keyboard = new Scanner(System.in);
- 객체 이름: 위 코드에서 객체 이름을
keyboard로 지었지만, 사용자가 원하는 어떤 이름으로도 지을 수 있다 - 일단 객체가 생성되면, 프로그램은
Scanner클래스에서 제공하는 다양한 메서드들을 호출하여 키보드 입력을 수행할 수 있다
숫자 입력 메서드: nextInt()와 nextDouble()
사용자가 입력한 숫자 데이터를 읽어올 때 사용한다
nextInt(): 키보드로 입력된 값을 읽어 정수 타입 변수에 할당한다
- 예:
int numberOfPods = keyboard.nextInt();
nextDouble(): 키보드로 입력된 값을 읽어 실수 타입 변수에 할당한다
- 예:
double d1 = keyboard.nextDouble();
공백의 중요성: 여러 개의 입력을 받을 때는 반드시 공백으로 구분해야 한다. 공백이란 빈칸, 탭, 줄바꿈 등을 의미한다
문자열 입력 메서드: next()
단어 단위의 문자열을 읽어올 때 사용한다
next(): 공백으로 구분된 단어 하나를 읽어온다(공백이 나타나면 읽기를 멈춘다)
작동 예시:
String word1 = keyboard.next();
String word2 = keyboard.next();- 입력창에 **“jelly beans”**라고 입력할 경우:
word1에는 **“jelly”**가 저장된다word2에는 **“beans”**가 저장된다
Scanner 클래스를 이용한 콘솔 입력 메서드: nextLine()
nextLine() 메서드는 앞서 배운 next()와 달리 사용자가 입력한 한 줄 전체를 읽어올 때 사용한다
기본 기능:
- 한 줄 읽기: 키보드로 입력한 문자열 중 엔터 키를 누르기 전까지의 모든 내용을 한 번에 읽는다
- 코드 예시:
String line = keyboard.nextLine();- 위 코드는 입려된 한 줄 전체를 읽어
line이라는 변수에 저장한다
- 위 코드는 입려된 한 줄 전체를 읽어
줄바꿈 문자와 엔터 키
- 입력의 끝: 자바에서 한 줄의 끝은 이스케이프 시퀀스인
'\n'으로 표시된다 - 엔터 키의 역할: 사용자가 Enter 키를 누르면 시스템 이를
'\n'문자로 인식하며, 이는 화면에서 현재 줄이 끝나고 다음 줄이 시작됨을 의미한다
nextLine()의 상세 작동 원리
- 읽기 방식:
nextLine()메서드는 텍스트를 읽을 때 마지막에 있는'\n'문자까지 모두 읽어 들인다 - 다음 입력에 미치는 영향:
\n까지 읽어서 처리하기 때문에, 다음에 오는 입력 메서드는 자연스럽게 다음 줄의 시작점부터 데이터를 읽을 수 있게 된다 - 반환 값의 특징:
nextLine()이 줄바꿈 문자(\n)를 읽기는 하지만, 실제로 반환하는 문자열 값에는\n을 포함하지 않는디- 예: 사용자가 “Hello”라고 치고 엔터를 눌렀다면,
nextLine()은 “Hello\n”을 읽어 들이지만 변수line에 저장되는 값은 딱 “Hello”이다
- 예: 사용자가 “Hello”라고 치고 엔터를 눌렀다면,
Scanner 클래스 메서드
숫자 데이터 입력 메서드
| 메서드 | 반환 자료형 | 설명 |
|---|---|---|
nextInt() | int | 다음 정수 값을 읽음 |
nextLong() | long | 더 큰 범위의 정수 값을 읽음 |
nextByte() | byte | byte 범위의 정수 값을 읽음 |
nextShort() | short | short 범위의 정수 값을 읽음 |
nextDouble() | double | 배정밀도 실수(소수) 값을 읽음 |
nextFloat() | float | 단정밀도 실수(소수) 값을 읽음 |
문자열 및 논리형 입력 메서드
next(): 다음 구분자(공백) 전까지의 문자열을 읽어 반환한다. 즉, 단어 하나를 읽을 때 적합하다
nextBoolean(): true 또는 false 문자열을 읽어 boolean 값으로 반환한다(대소문자 구분 없음)
nextLIne(): 현재 줄의 나머지 전체를 읽어 반환한다
useDelimiter(New_Delimiter): 기본값인 공백 문자 대신 사용자가 원하는 문자열을 새로운 구분자로 설정할 수 있다
- 예를 들어, 쉼표(
,)를 기준으로 데이터를 분리하고 싶을 때 유용하다