【问题标题】:Custom formatting of Natural Number自然数的自定义格式
【发布时间】:2017-04-09 00:39:04
【问题描述】:

为了学习 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,

【问题讨论】:

  • @Andreas 非常感谢您,先生。

标签: java number-formatting


【解决方案1】:

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

如果您更喜欢使用NumberFormat,您可以致电setMinimumIntegerDigits() 以获得所需的结果。根据语言环境,您可能还需要调用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2012-12-12
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多