2017-11-10 2 views
-1

그래서 "회계 형식"으로 포맷 된 문자열로 제공된 금액을 반환하는 메서드를 만들어야합니다. 즉, 음수 값은 대괄호를 가지며 십진수 왼쪽의 세 자리마다 쉼표가옵니다. 십진수 오른쪽의 숫자는 소수점 이하 두 자리로 반올림됩니다. 양이 음수이면 반환되는 문자열의 오른쪽 괄호는 입니다. 양이 양수이면 반환 문자열은 의 가장 오른쪽 문자로 공백을 갖습니다. 제공된 너비에 따라 반환되는 문자열의 길이가 결정됩니다. 너비가 형식화 된 값을 나타내는 데 필요한 최소 문자 수보다 큰 경우 반환되는 문자열에 공백이 왼쪽으로 채워집니다. 너비가이 최소값보다 작거나 같으면 너비는 무시됩니다.자바에서이 메서드에서 패딩 된 공백을 가진 문자열을 반환하는 방법

지금까지 내 코드는 다음과 같습니다

String amountString = String.format("%,.2f", amt); 

    if (amt < 0){ 
     String positionAmount = amountString.substring(1, amountString.length()); 
     amountString = '(' + positionAmount + ")"; 
    } 
    else{ 

    } 

    //apply width 
    if(amountString.length() < width){ 
     amountString = amountString + " "; 
    } 
    return amountString; 
}}` 

I 입력 (10)의 폭 숫자 "1000"은 "1,000.00"대신이해야하는 "1,000.00"의 출력 할 때이 코드 내 문제입니다 처음에는 너비가 10이고 끝 부분에 하나의 공백이 있어야하기 때문에 공백이 있습니다.

이 문제를 해결하려면 어떻게해야합니까? 감사!

+0

을 amountString 전에 ""추가하지 않기 때문에 이것은이다 start (ammountString = ""+ amountString + "") – crammeur

+0

이제 w로 0을 입력하면 너비 1 "0.00"대신 "0.00" –

+0

http://puu.sh/yjfts/2f1b2a6c5a.png –

답변

0
String amountString = String.format("%,.2f", amt); 

    if (amt < 0){ 
     amountString = amountString.substring(1, amountString.length()); 
     amountString = "(" + amountString + ")"; 
    } 
    else if(amountString.length() < width){ 
     amountString = amountString + " "; 
    } 

    while(amountString.length() < width) 
    { 
     amountString = " " + amountString; 
    } 

    System.out.println("{" + amountString + "}"); 

당신이에서 공간을 두지 않기 때문에 출력

{  1,000.00 } //amt 1000, width 15 

{ 1,000.00 } //amt 1000, width 10 

{(1,000.00)} //amt 1000, width 10 not sure about the bracket but this is my guess 

{  5.00 } //amt 5, width 10 

{      2,020.57 } //amt 2020.5678, width 30 

{0.00} //amt 0, width 1 
+0

이런 종류의 문제는 너비가 10 인 1000의 문제를 해결하지만 너비가 1 인 "0.0"의 경우 " 0.00 "이다. 다음은 내 테스트 프레임 워크의 스크린 샷입니다. http://puu.sh/yjfts/2f1b2a6c5a.png –

+0

그 케이스를 해결해야하지만 다른 곳을 추가했는데 질문에 아무 것도 적어 두지 않은 경우를 설명합니다. 귀하의 설명에 따르면 모든 양수는 가장 오른쪽 문자로 공백이 있어야한다고 나와 있습니다. –

+0

이제는 모든 테스트 케이스에서 작동해야합니다. @DeemAh –

0

당신이

//apply right side 
if (amountString.length() < width) { 
    amountString = amountString + " "; 
} 

//apply left side 
if(amountString.length() < width){ 
    amountString = " " + amountString; 
} 
+0

이것을보십시오 http://puu.sh/yjfts/2f1b2a6c5a.png 이제 0을 입력 할 때 너비 1을 "0.00"대신 "0.00" –

관련 문제