所以我必须创建一个方法来返回以"会计格式"格式化的字符串提供的金额。也就是说,负数将在其周围有括号,并且在小数点左边的每三位数后面会有一个逗号。小数点右边的任何数字将四舍五入到小数点后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,并且最后只有一个空格。
我应该做些什么改变来解决这个问题?谢谢!
答案 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;
}