为了学习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,
答案 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);
}