自然数的自定义格式
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
为了学习 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