1

我意识到这听起来很简单,并且可能是......说这个 main() 中的代码,它位于循环内部:

System.out.println(num[i]+"\t     "+qty[i]+"\t     "+money.format(price[i])+"\t"+money.format(value[i])+"\t"+reorder[i]);

此处捕获的总数:

http://maradastudios.ucoz.com/school/Capture.png

您可能已经注意到,它工作正常。但是,在输出期间,#114 行(倒数第二行)的总价值为 90.00 美元。这是正确的,但它会导致 Reorder Point 变量出现奇怪的间距。简单地说,我可以格式化这个变量以占用与较大数字对应的相同数量的空间吗?

4

2 回答 2

5

就像是

String.format("%10.2f", yourFloat)
// or
System.out.format("%10.2f", yourFloat)

将打印一个 10 字符宽(包括十进制)的字符串,小数点后有两个数字字符。

文档

所以

String.format("$%6.2f", value[i])

将对齐$.字符(除非value[i] > 999.99)。


代替:

System.out.println(
    num[i]                +"\t     "+
    qty[i]                +"\t     "+
    money.format(price[i])+"\t"+
    money.format(value[i])+"\t"+
    reorder[i]);

(这正是你所拥有的,只是为了清晰起见并删除了滚动条)

我可能会写:

System.out.format("%5d\t %5d\t $%5.2f\t $%6.2f\t %5d %n", 
    num[i], qty[i], price[i], value[i], reorder[i]);

这假设priceandvalue数组是浮点数或双精度数。由于不是标准类,因此除了添加符号money之外,很难准确说出它的作用。$


文档中定义了字符串格式语法,但对于浮点数,它大致是:

%X.Yf

其中X是总字段宽度,Y是小数点数

例如

"123.40"  Has a total width of 6:  
          3 + 1 [decimal point] + 2 = 6)
"  2.34"  Also has a total width of 6:
          2 [spaces] + 1 + 1 [decimal point] + 2 = 6
于 2013-04-05T16:44:42.590 回答
-1
Formatter formatter = new Formatter();
    System.out.println(formatter.format("%20s %20s %20s %20s %20s", "Title*", "Title*", "Title*", "Title*", "Title*"));

    for (int i = 0; i < 10; i++) {
        formatter = new Formatter();

        System.out.println(formatter.format("%20s %20s %20s %20s %20s", num[i],qty[i],money.format(price[i]),money.format(value[i]),reorder[i]));
    }
于 2013-04-05T16:49:58.057 回答