답변 2
0
안녕하세요 해당강의를 같이 수강하고있는 사람입니다.
자바의 System.out.printf()는 정수형 출력 "%d"의 "%"바로뒤에 ","를 사용할시 세자리수마다 ","를 찍어 출력하는 기본기능을 객체를 이용하여 제공하고있다고합니다. 내장기능이기 때문에 숙지하시고 가볍게 넘기셔도 괜찮을거같습니다.
printf 가 아닌 다른방식으로 쉼표 표기하거나 세번째자리가 아닌 다른방식으로 표기하고 싶으실경우 format메소드를 이용하여 표기합니다.
0
안녕하세요?
System.out.printf( 형식, 값 ); 는 원하는 형식으로 값을 출력하기 위해 사용합니다.
1) '%d' 는 정수 값을 위한 형식 지정자입니다. 예제에서는 1000000000 이라는 정수를 출력하기 위해 %d 를 사용했습니다.
2) % 와 d 사이에 들어가는 15 라는 값은 자릿수를 위해 사용합니다. 총 15자리 만큼의 공간을 확보하고 거기에 값을 넣으라는 의미입니다. 보통 출력값보다 자릿수를 여유롭게 설정합니다.
3) % 뒤에 들어가는 콤마(,) 는 천(1000) 단위로 구분 기호를 출력하는 역할을 합니다.
4) '%n' 은 줄바꿈을 위해 사용합니다. System.out.println( ) 의 경우 맨 뒤에 붙은 ln 이 line 을 뜻하며 자동으로 줄바꿈을 하는데 System.out.printf( ) 에서는 %n 을 넣지 않으면 줄바꿈을 하지 않습니다.
정수 3자리마다 콤마가 찍히는 원리는 실제로는 구현되어 있는 코드가 복잡하게 되어 있어 모든 내용을 설명드리기는 어렵고 쉽게 아래와 같은 방식으로 진행된다고 이해하시면 도움될 것 같아요.
public class SampleClass {
public static void main(String[] args) {
String result = separateNumberWithComma(1000000000);
System.out.println(result);
}
public static String separateNumberWithComma(int number) {
String str = Integer.toString(number);
StringBuilder sb = new StringBuilder(str);
int index = sb.length() - 3;
while (index > 0) {
sb.insert(index, ",");
index -= 3;
System.out.println(sb.toString()); // 과정 출력
}
return sb.toString();
}
}
먼저 실행 결과는 이렇습니다.
1000000,000 // 뒤에서 3자리 앞에 콤마 삽입
1000,000,000 // 그로부터 3자리 앞에 콤마 삽입
1,000,000,000 // 그로부터 3자리 앞에 콤마 삽입
// 아래는 최종 결과
1,000,000,000
separateNumberWithComma() 메소드에서는 콤마를 적용하려는 정수를 전달받은 뒤 문자열로 변환을 합니다. 그리고 문자열의 길이를 파악하여 문자열의 맨 뒤에서 3자리 앞에 콤마를 삽입(sb.insert) 합니다. 그리고 3자리 앞으로 이동 (index -= 3) 하여 또 콤마를 삽입합니다. 이 작업을 반복수행하고 나면 결과적으로 3자리마다 콤마가 적용된 문자열이 되는 것이죠.
궁금증 해결에 도움되시길 바라겠습니다 😊
감사합니다.