如何在Java中使用此方法返回带填充空格的字符串

时间:2017-11-10 22:38:30

标签: java methods

所以我必须创建一个方法来返回以"会计格式"格式化的字符串提供的金额。也就是说,负数将在其周围有括号,并且在小数点左边的每三位数后面会有一个逗号。小数点右边的任何数字将四舍五入到小数点后2位。 如果金额为负数,则返回的字符串将具有右括号 作为最正确的角色。如果金额为正数,则返回字符串将为 有一个空间作为最右边的角色。提供的宽度将确定返回的字符串的宽度。如果宽度大于表示格式化值所需的最小字符数,则返回的字符串将用空格填充。如果宽度小于或等于此最小值,则宽度将被忽略。

到目前为止,我的代码是:

 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;
}}`

这段代码的问题是当我输入数字&#34; 1000&#34;宽度为10,输出&#34; 1,000.00&#34;而不是&#34; 1,000.00&#34;它应该在开头有一个空格,因为宽度是10,并且最后只有一个空格。

我应该做些什么改变来解决这个问题?谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这是因为你没有在amountString

之前添加“”

示例

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

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