Money (append_comma)

양혜정·2024년 2월 3일
0

Begin_java

목록 보기
43/71

append_comma (콤마추가)

글자길이 1글자(3의 배수 X) | 콤마의 개수 1/3 => 0
글자길이 2글자(3의 배수 X) | 콤마의 개수 2/3 => 0
글자길이 3글자(3의 배수 O) | 콤마의 개수 3/3 => 1
	// 3의 배수이므로 '-1' 하여 콤마의 개수 => 1-1 = 0
글자길이 6글자(3의 배수 O) | 콤마의 개수 6/3 => 2
	// 3의 배수이므로 '-1' 하여 콤마의 개수 => 2-1 = 1
글자길이 7글자(3의 배수 X) | 콤마의 개수 7/3 => 2
글자길이 9글자(3의 배수 O) | 콤마의 개수 9/3 => 3
	// 3의 배수이므로 '-1' 하여 콤마의 개수 => 3-1 = 2

- 방법1

// 숫자를 문자열로 바꾸어주기
String temp = String.valueOf(num);
char[] origin_arr = temp.toCharArray();	// char 배열타입

// 콤마의 개수
(3의배수이면 3으로 나눈값에 -1, 3의배수가 아닐 경우 3으로 나눈값)
int comma_len =
(origin_arr.length%3==0)?origin_arr.length/3-1
	:origin_arr.length/3);
    
// 콤마의 개수를 포함하여 길이가 늘어나니 (기존배열 + 콤마개수) 인 
// 새로운 char 타입 배열 선언
char[] result_arr = new char[origin_arr.length + comma_len];

// i 는 기존 글자길이-1 마지막 인덱스 수
// j 는 ,가 들어간 배열의 마지막 인덱스 수
// count 는 , 가 들어갈 위치 파악
for(int i=origin_arr.length-1, j=result_arr.length-1
	,count=1; i>=0; i--,j--,count++) {
    if(count%4 != 0) {	
    // result_arr의 4번째 마다 , 가 들어가므로 %4 != 0
    	result_arr[j] = origin_arr[i];
    } else {	// count가 4일때,
    	result_arr[j] = ',';	
        i++;
// result_arr의 자리는 , 으로 채워지지만
// 그 다음 인덱스의 숫자가 원하지 않은 것이 올 수 있으므로
// i++ 을 해준다.
    }	// end of if~else-------
}	//end of for----------

// result_arr => , 가 포함된 num

- 방법2

java.text.DecimalFormat import하기

DecimalFormat df = new DecimalFormat("#,###");
// 3자리 마다 콤마(,) 찍기
System.out.println("$" + df.format(금액));

참고

valueOf : https://velog.io/@jjoung-2j/valueOf

toCharArray : https://velog.io/@jjoung-2j/charAt-toCharArray-substring-indexOf-lastIndexOf


정리

my.day10.a.string -> Main_String
my.util -> MyUtil

0개의 댓글