2017-01-03 2 views
1

오른쪽에서 왼쪽으로 보는 세 자리마다 추가가 지정됩니다. 따라서 숫자 1000000은 1,000,000 등이어야합니다.Java에서 숫자 문자열에 쉼표를 추가하는 방법

이 문제를 해결하는 방법은 비교적 잘 알고 있지만 출력이 나오지 않습니다. 어쩌면 내가 알지 못하는 뭔가 실수를 저질렀습니다. ...

문자열은 변하지 않기 때문에 변경할 수 없으므로 문자열을 변경하려고 할 때 생각합니다. 새로운 문자열 객체를 만드는 것.

`result = ch + result;` 

result = "," + result;

을 내가 잘못 여기에 도착하고 무엇 :하지만이 후 어떻게 가능 얻을 해달라고?

import acm.program.*; 
    import acm.util.*; 

    public class AddCommasToNumericString extends ConsoleProgram{ 

     public void run(){ 
      while(true){ 
       String digits = readLine("Enter a numeric string: "); 
       if (digits.length() == 0) break; 
       println(addCommasToNumericString(digits)); 
      } 
     } 

     public String addCommasToNumericString(String digits){ 
      String result = ""; 
      int counter = 0; 
      for (int i = digits.length()-1; i <= 0 ; i--){ 
       char ch = digits.charAt(i); 
       result = ch + result; 
       counter++; 
       if (counter % 3 == 0){ 
        result = "," + result; 
       } 
      } 
      return result; 
     } 
    } 
+1

'NumberFormat.getNumberInstance (Locale.US) .format (digitits)'가 작업을 수행합니다. – bhantol

+0

@bhantol 당연히 그렇습니다.하지만 문자열로 작업하는 방법을 배우려면이 작업을 직접 수행하는 것이 좋습니다. –

+0

그래, 내가 왜 이렇게 쉽게 해결책을 게시하지 않았는지 물었다. – bhantol

답변

2

for 루프 조건이 잘못되어 루프가 실행되지 않습니다. 조건은 i >= 0이어야합니다. 이 시도 :

for (int i = digits.length()-1; i >= 0 ; i--) { 
    char ch = digits.charAt(i); 
    result = ch + result; 
    counter++; 
    if (counter % 3 == 0) { 
     result = "," + result; 
    } 
} 

당신은 또한 counter을 제거하고 작은 변화하여 단지 루프 변수를 사용할 수 있습니다

for (int i=1; i < digits.length(); ++i) { 
    char ch = digits.charAt(digits.length() - i); 
    result = ch + result; 
    if (i % 3 == 0) { 
     result = "," + result; 
    } 
} 
+1

항상 이런 식으로 몇 가지 과제를 완료하고 항상 이러한 실수를 저지릅니다. 나는 Txx 팀. – Miljan

0

정수로 읽기 라인 변환을, 다음 문자열 로 포맷 문자열 숫자 = readLine ("숫자 문자열 입력 :"); 정수 myInt = 새 정수 (자릿수); 문자열 출력 = NumberFormat.getNumberInstance (Locale.US) .format (myInt.value());

관련 문제