2015. 3. 8. 02:11


DigiGroupAsStr.java


package digitGroup;

/**
 * 10진수를 입력받아, 천(1000)자리 구분자를 추가하는 프로그램.
 */
public class DigiGroupAsStr {
    
    public static void main(String args[]) {
        
		int loopCount = 1000000;
		for(int idx=0; idx<10; idx++) {
			long startMilliTime = System.currentTimeMillis();
			benchmark(10, 10, loopCount);
			long endMilliTime = System.currentTimeMillis();
			System.out.println( loopCount + ";" + (endMilliTime - startMilliTime));
			loopCount += 1000000;
		}
    }

	private static void benchmark(int startNum, int interval, int loopCount) {
		int inputNumber = startNum; 
		for(int cnt=0; cnt<loopCount; cnt++) {
			convert(inputNumber);
			inputNumber += interval;
		}
	}

    private static String convert(int number) {
        final char THOUSANDS_SEPARATOR = ',';
        StringBuilder sb = new StringBuilder();
        
        // 입력 숫자를 문자열 타입으로 변환
        String numberAsStr = String.valueOf(number);

        // 맨 앞부분에서 잘라낼 길이를 계산하고, 출력 버퍼에 담는다.
        int separationIndex = numberAsStr.length() % 3;
        sb.append(numberAsStr.substring(0, separationIndex));
        
        // 숫자의 나머지를 3자리씩 잘라서 구분자와 함께 추가한다.
        while(separationIndex < numberAsStr.length()) {
            if(separationIndex > 0) {
                sb.append(THOUSANDS_SEPARATOR);
            }
            sb.append(numberAsStr.substring(separationIndex, 
                      separationIndex+3));
            separationIndex += 3;
        }
        
        return sb.toString();
    }

}
Posted by 곽중선