自然数字的自定义格式

时间:2017-04-09 00:39:05

标签: java number-formatting

为了学习Java编程,我试图通过阅读可用的文档和示例代码将我的小想法放入程序中。 通过String Formatter,Number Formatter,Spring的数字格式化等等。

但坚持到下一步。很好的指导。

输入:( TotalDigits Required,NaturalNumberToBeFormatted)

目标是实现:

Input (4,1)      Output String : 0001,
Input (3,20)     Output String : 020,
Input (6,12)     Output String : 000012,
Input (6,179)    Output String : 000179,
Input (2, 19)    Output String : 19,

1 个答案:

答案 0 :(得分:3)

您可以将String.format()与动态创建的格式字符串一起使用,例如输入 /home/ubuntu/torch/install/bin/luajit: ...e/ubuntu/torch/install/share/lua/5.1/torchx/indexdir.lua:53: attempt to perform arithmetic on a nil value stack traceback: ...e/ubuntu/torch/install/share/lua/5.1/torchx/indexdir.lua:53: in function 'indexdir' create_t7.lua:25: in main chunk [C]: in function 'dofile' ...untu/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:150: in main chunk [C]: at 0x0000cff9 应为3,20

如果您更喜欢使用NumberFormat,则可以致电setMinimumIntegerDigits()以获得所需的结果。根据区域设置,您可能还需要调用setGroupingUsed(false),因此不会添加千位分隔符。

以下是展示两者的示例代码:

String.format("%03d", 20)

输出

public static void main(String[] args) {
    test(4, 1);   // expected: 0001
    test(3, 20);  // expected: 020
    test(6, 12);  // expected: 000012
    test(6, 179); // expected: 000179
    test(2, 19);  // expected: 19
}
private static void test(int len, int value) {
    String s1 = String.format("%0" + len + "d", value);

    NumberFormat fmt = NumberFormat.getIntegerInstance();
    fmt.setMinimumIntegerDigits(len);
    fmt.setGroupingUsed(false);
    String s2 = fmt.format(value);

    System.out.printf("%-10s%s%n", s1, s2);
}