반응형

 

 

 

 

📌 자바 숫자 앞에 0으로 채우기

시퀀스를 생성하거나 특정한 경우에 정수 왼쪽에 자릿수만큼 0으로 채워야 하는 경우가 있다.

아래와 같이 5자리로 표현해야 하는 값이 있을 때
1

부족한 자리수만큼 정수값의 왼쪽에 0으로 채워야 한다.
00001

 

이러한 경우에 두 가지 방법을 이용하여 해결할 수 있다.

◾ String.format()를 이용한 방법

 DecimalFormat를 이용한 방법 

 

번외로, 콘솔에 해당 값의 출력을 원하는 경우에는 System.out.printf()를 사용할 수도 있다.

 

 

 

 

1️⃣ String.format()

String.format(format, num) 함수는 인자로 전달된 format에 맞게 숫자를 문자열로 변환한다.

아래에서 "%0Nd"는 정수를 N개의 자릿수로 반환하며, 왼쪽의 비어있는 공간은 0으로 채운다는 의미이다.

public class Example {

    public static void main(String[] args) {
        int num = 1234;
        
        String str = String.format("%06d", num);
        System.out.println(str); // 001234

        str = String.format("%010d", num);
        System.out.println(str); // 0000001234
    }
}

 

 

 

 

2️⃣ DecimalFormat

DecimalFormat는 new 연산자를 통해 객체를 초기화해야 사용할 수 있으며 초기화시 자릿수를 지정한다.

 

아래 예제와 같이 new DecimalFormat("000000")으로 자릿수(0의 개수)를 지정하여 객체를 초기화한다.

그 후 df.format(num)을 통해 비어있는 공간은 0으로 채워 변환된 값을 반환한다.

import java.text.DecimalFormat;

public class Example1 {

    public static void main(String[] args) {

        int num = 1234;

        DecimalFormat df = new DecimalFormat("000000");
        String str = df.format(num);
        System.out.println(str); // 001234

        df = new DecimalFormat("0000000000");
        str = df.format(num);
        System.out.println(str); // 0000001234
    }
}

 

 

 

 

3️⃣ System.out.printf()

printf()는 String.format()과 같이 특정 형식으로 주어진 정수를 문자열로 변환할 수 있다. 

또한, printf()는 변환된 값을 리턴하지 않고 콘솔에 출력하므로 제한된 상황에서만 사용성을 갖는다.

public class Example2 {

    public static void main(String[] args) {

        int num = 1234;

        System.out.printf("%06d", num); // 001234

        System.out.println();

        System.out.printf("%010d", num); // 0000001234
    }
}

 

 

 

 

 

 

 

 

📌 참고사이트

codechacha :: java-fill-zeros-with-string

 

 

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기