package test;
import java.util.Scanner;
public class StringFormat {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = "StringFormat";
while (true) {
System.out.print("\n자리 수 : ");
int idx = sc.nextInt();
if (idx == 0)
break;
System.out.println("표현 : %" + idx + "s");
System.out.println("|||||||||||||||||||||||||||||||");
System.out.printf(String.format("%%%ds\n", idx), s);
}
}
}
출력문에서 전체 출력 공간을 지정할 때 정수형의 경우 %10d, 문자열의 경우 %10s처럼 %와 타입 사이에 숫자로 전체 길이를 지정한다. 전체 길이가 변화할 경우 printf()와 String.format()을 사용해 변수를 사용할 수 있다. 예제에서 사용된 %%%ds와 idx는 입력 된 자리 수 10, 12, 15, 20을 %10s, %12s, %15s, %20s처럼 나타내기 위한 표현이다.
%%%ds는 떼어내 %%, %d, s처럼 3부분으로 나눈다고 가정한다. %d에는 뒤에서 제공한 변수 idx의 값을 가져간다. 예를들어 10이라 가정한다면 다음처럼 된다. %%, 10, s. String.format()에서 printf()로 값을 넘겨줄때 %%는 %로 변환된다. 즉, %, 10, s이다. 이를 조합해 printf()에 넘겨지는 값을 예측하면 %10s와 같다. %10s는 printf()의 두번째 인자인 변수 s의 값인 "StringFormat"을 전체 10칸에 출력한다. 변수 s의 전체 길이는 12로 그 이하에서는 변화가 없다. 15, 20을 입력했을 때 출력값이 바뀌는 것을 확인할 수 있다.
'개발' 카테고리의 다른 글
HeidiSQL, 데이터베이스 GUI 관리 툴 (0) | 2021.11.11 |
---|---|
스프링부트에서 JSP 사용하기 (0) | 2021.11.09 |
[이클립스] JAVA EE web.xml 저장시 오래 걸리는 현상 (0) | 2021.09.28 |
[이클립스] enum 멤버 자동 정렬 정지 (0) | 2021.09.16 |
[C lang] 가위 바위 보 (0) | 2021.08.26 |
nodejs, NPM 설치 (0) | 2020.12.14 |
쉽게 활용 가능한 무료 사진 API (0) | 2020.11.30 |
JSON 문서 보기 좋은 크롬 확장 프로그램 JSONView (0) | 2020.03.30 |