출력(전반전-정수)
395
投稿した質問数 5
정수 3자리마다 콤마가 찍히는 원리를 답변 받고 싶습니다 ㅠㅠ
回答 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,000separateNumberWithComma() 메소드에서는 콤마를 적용하려는 정수를 전달받은 뒤 문자열로 변환을 합니다. 그리고 문자열의 길이를 파악하여 문자열의 맨 뒤에서 3자리 앞에 콤마를 삽입(sb.insert) 합니다. 그리고 3자리 앞으로 이동 (index -= 3) 하여 또 콤마를 삽입합니다. 이 작업을 반복수행하고 나면 결과적으로 3자리마다 콤마가 적용된 문자열이 되는 것이죠.
궁금증 해결에 도움되시길 바라겠습니다 😊
감사합니다.
자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?
0
136
2
static이 뭐였는지 기억이 안나요 ㅜㅜ
0
111
2
Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의
0
70
1
사고력 키우는 법이 어떤게 있나요?
0
91
2
getter setter
0
101
2
섹션9. 66 메소드 오버로딩 시 질문이 있습니다.
0
78
1
안녕하세요 갑자기 프로그램 에러가 떠서 안되네요
0
75
2
변수 이름짓는법
0
114
2
intelli J 실행오류
0
114
2
혹시 이건 수학적 사고가 부족한 걸까요?
0
152
2
영상이 재생이 안됩니다.
0
166
3
이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.
0
114
2
응용이 어렵습니다.
0
203
2
IntelliJ가 보이지 않습니다.
0
182
3
JDK 버전 문의
0
128
2
BlackBox 파일 내에서 메소드 정의
0
136
1
동기화
0
120
2
Iterator 문의
0
104
1
코드 순서 문의
0
139
1
클래스 메소드
0
148
2
Quiz_05 관련 질문드립니다 !
0
117
2
다운로드가 안됩니다
0
165
2
다형성
0
118
2
HashMap
0
80
2

