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);
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 |