본문 바로가기

Backend/Java

[JAVA] System.out.printf()

 

 


 

printf 알아보기

국비지원수업 6일차

 


 

 

 

1. printf란?


System.out.printf() 형식

- printf는 print + format의 합성어로 만들어진 명령

- Ststem.out.print 와 마찬가지로 () 안에 " " 을 사용하여 출력할 내용을 기술

- format 이라는 특성이 추가돼어 다른 데이터(숫자(정수/실수), 참/거짓)들이 함께 출력 되도록 함

 

 

 

2. %


%d 의 역할

- 아직 출력이 결정되지 않은 내용이 추후 차지하고 같이 출력될 자리

- printf 안에서는 % 글자의 기능이 따로 존재, print 안에서는 그저 출력의 대상

 

printf % 사용 방법

%d 자리에 표시될 자료는 따옴표가 끝난 뒷자리에 ' , '로 구분해서 표시

System.out.printf("56 x 69 = %d\n", 56*69);

 

연산 후 %d 표시 실행

 

 

System.out.printf("56 x 69 = %d"); // 에러

 

 


출력될 내용의 자료형에 따라 아래와 같이 표기

- %d : 정수

- %f : 실수

- %s : 문자열(텍스트)

- %c : char형 문자

- %b : boolean (true/false)

 

 

- %(자료형)은 printf 안에서 필요한 만큼, 여러 개 사용 가능

// %가 있는 이스케이프 문제가 여러개라면, 순서에 맞춰서 매칭될 자료를 뒤쪽에 나열
System.out.printf("%d x %d = %d\n", 26, 37, 26*37);
		
// 소수점이 있는 실수의 출력
System.out.printf("%d ÷ %d = %f\n", 87, 23, 87/23.0);

 

 

 

 

- %(자료형)은 매칭될 자료형이 맞지 않을 때 에러를 발생

System.out.printf("%d\n", 23.45); // 에러

 

 

 

- %s 의 경우, 숫자가 오더라도 이를 문자열로 인식하여 논리적 오류를 발생시킬 수 있음

System.out.printf("%s\n", 23); // 정상 실행
System.out.printf("%s\n", 23.45); // 정상 실행

 

 

 

3. 자리수 조절


 


3-1. 정수 (integer, %d)

- %와 d 사이에 표시할 자리수만큼 숫자 입력

- 출력할 숫자의 개수가 지정한 숫자보다 크면, 모자란 자리수를 자동으로 추가하고 출력

- 출력할 숫자의 개수가 지정한 숫자보다 작다면, 남는 공간을 빈칸으로 대치, 숫자는 오른쪽 정렬

- 숫자를 넣지 않으면 표시할 숫자가 있는 만큼 자리가 확보되어 출력

 

// 출력할 숫자의 개수가 지정한 숫자보다 크면, 모자란 자리수를 자동으로 추가하고 출력
System.out.printf("정수%3d정수\n", 1234567);

// 출력할 숫자의 개수가 지정한 숫자보다 작다면 남는 공간을 빈칸으로 대치, 숫자는 오른쪽 정렬
System.out.printf("정수%10d정수\n", 12345);

 

 


3-2. 문자(String, %s)

- 정수와 사용방법이 비슷

 

 // 숫자를 지정하지 않은 경우
System.out.printf("문자 : %s꽃이 피었습니다\n", "무궁화");
		
// 숫자를 썼지만 자리가 모자른 경우, 필요한 만큼 자동으로 자리 추가
System.out.printf("문자 : %2s꽃이 피었습니다\n", "무궁화");

// 숫자를 써서 자리가 남는 경우 : 공백으로 채움
System.out.printf("문자 : %10s꽃이 피었습니다\n", "무궁화");

 

 


3-3. 실수 (double, %f, %lf)

- 소수점 윗자리는 필요한 만큼 자리 확보, 소수점 아랫자리는 6자리 확보 후 남으면 0으로 채움

 

조절 숫자를 사용한 경우 예시 ) %10.2f

- 총 자릿수 :  10자리

- 소수점 아래 자리 : 2자리까지 표시

- 소수점이 될 1자리 소비

- 나머지 7자리가 정수 자리

 

// 숫자를 지정하지 않은 경우
System.out.printf("실수%f실수\n", 123.123);

System.out.printf("실수%10.2f실수\n", 123.123);
System.out.printf("실수%3.1f실수\n", 123.123);

 

 


 

3-4. 활용 예시

1. 점수를 한 자리, 두 자리, 세자리로 다양하게 입력

2. \t 대신 %7d 등을 사용해 각 점수의 소수점을 맞춰서 출력

3. 평균의 소수점은 한 자리만 출력

4. %s %d %f 의 자리수 조절을 이용해서 각 점수들 간의 간격 맞추기

 

System.out.print("\t\t\t###성적표###\n");
System.out.print("------------------------------------------------------------\n");
System.out.printf("%4s%8s%9s%6s%7s%7s%7s\n", "번호", "성명", "국어", "영어", "수학", "총점", "평균");
System.out.print("------------------------------------------------------------\n");
System.out.printf("%4d%9s%9d%7d%7d%8d%8.1f\n", 1, "홍길동", 1, 49, 100, 1+49+100, (1+49+100)/3.0);
System.out.printf("%4d%9s%9d%7d%7d%8d%8.1f\n", 2, "홍길서", 100, 33, 50, 100+33+50, (100+33+50)/3.0);
System.out.printf("%4d%9s%9d%7d%7d%8d%8.1f\n", 3, "홍길남", 10, 28, 5, 10+28+5, (10+28+5)/3.0);
System.out.print("------------------------------------------------------------\n");

 

 

 

'Backend > Java' 카테고리의 다른 글

[JAVA] 클래스 생성자(Constructor)  (0) 2024.10.14
[JAVA] 클래스(Class) 생성과 사용  (0) 2024.10.07
[JAVA] 메소드 (Method)  (0) 2024.09.27
[JAVA] 배열 (Array), 2차원 배열  (0) 2024.09.27
[JAVA] 연산자 (Operator)  (0) 2024.09.24