lpad 기능 구현.

course/자바 2016. 10. 10. 17:50

지식인에 올라온 질문에 답변을 달았는데..

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=262193356&page=1#answer1

 

그걸로 좀 부족한것 같아 수정본을 올린다.

숫자앞에 필요한 만큼 '0'을 붙이는 기능은 자바의 DecimalFormat 같은 클래스가 있지만 그냥 '생'으로 만들어 봤다.

생각나는데로 만든거라 엄청 조잡하지만, 이것도 나중에 다시 정리하기로 하고..(정리할께 엄청 늘었다.)

증가값은 5식 끊어 줬다.

 

 

1. CLASS

 

public class t1010_005 {
  public static void main(String args[]){

 

    String lpnum = "", lch = "";
    int cipher = 3, cip_re = 0, no = 1; // '0'의 총 자릿수 초기값 설정.(여기서는 'cipher'는 3이므로 0000 ~ 9999)
    cip_re = cipher;


    int count = 1, num = 0;
    int ch0 = 'A'; // 영대문자 초기값
.   char ch1 = 0;
   
    while(true){
      String seqNum = "";
   
      if(num > 110){  // 알파벳 넘버별로 출력할 최대값 설정. 위의 'cipher'의 초기값에 의해 최대값은 9999.
        count = 1; // 값들을 초기화
        num = 0;
        no = 1;
    
        lpnum = "";
        lch = "";
        ch0++; // 알파벳 초기값을 1씩 증가.
    
        if(ch0 > 67){ // 영대문자 A(65)~C(67)까지 출력.
          break;
        }
        System.out.println();
      }

 

      if(num == 0){ // 0~9일때 앞자리 '0'의 개수.
        ch1 = (char) ch0;
        cip_re = cipher;
    
        for(int i = 0; i < cip_re; i++){
          lpnum = "0" + lpnum;
          lch = lch + ch1;
        }
    
      }else if(num / 10 == count){ // 10이상 일때 앞자리 '0'의 개수.
        cip_re = cipher;
        ch1 = (char) ch0;
        count = count * 10;
        cip_re = cip_re - no;    
        lpnum = "";


        for(int i = 0; i < cip_re; i++){
          lpnum = "0" + lpnum;
        }
        no++;
      }
     

      // if(num % 3 == 0){ // 출력할 번호가 3의 배수일 경우.(AAA0000, AAA0003, AAA0006, AAA0009, AAA0012, ...)
      seqNum = lch + lpnum + Integer.toString(num);

      System.out.println(seqNum);

      } //

      // num++;
      num = num + 5;
    }
  }
}

 

 

2. RUN

 

AAA0000
AAA0005
AAA0010
...

AAA0095
AAA0100
AAA0105
AAA0110

 

BBB0000
BBB0005
BBB0010
...

BBB0095
BBB0100
BBB0105
BBB0110

 

CCC0000
CCC0005
CCC0010
...

CCC0090
CCC0095
CCC0100
CCC0105
CCC0110