自然数的自定义格式

Custom formatting of Natural Number

为了学习 Java 编程,我试图通过阅读可用的文档和示例代码将我的小想法变成一个程序。 通过 String Formatter、Number Formatter、Spring 的 Number Formatter 等

但坚持到了下一步。请指导。

输入:(需要 TotalDigits,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,

您可以将 String.format() 与动态创建的格式字符串一起使用,例如输入 3,20 应该变成 String.format("%03d", 20).

如果您更喜欢使用 NumberFormat, you can call setMinimumIntegerDigits() to get the desired result. Depending on locale, you'll probably need to also call setGroupingUsed(false),那么它不会添加千位分隔符。

这是展示两者的示例代码:

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

输出

0001      0001
020       020
000012    000012
000179    000179
19        19