我想要的是获取数字的前2位数字。如果数字没有大于1的数字,那么它将添加前导零。
s变量等于“122”,但我想获得前2位数字“12”。我认为我的格式存在问题。
例如,如果totalNumberOfCars等于6,那么s变量将等于“06”。
int totalNumberOfCars = 122;
String s = String.format("%02d", (totalNumberOfCars + 1))
编辑:有没有人知道String.format(“%02d”,totalNumberOfCars)的作用?
答案 0 :(得分:2)
我担心String.format()
无法完成这项工作,请参阅http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax。
但是你的格式字符串将是子字符串的一个很好的起点,因为任何ifs都是不必要的:
int totalNumberOfCars = 122;
String s = String.format("%02d", (totalNumberOfCars + 1));
s = s.substring(0,2);
顺便说一下上面javadoc链接的浓缩解释:
与参数不对应的格式说明符具有以下语法:
%[flags][width]conversion
[...]在同一页面上进一步向下:
标志 '0'[...] [表示]零填充
[...]在同一页面上进一步向下:
宽度
宽度是要写入输出的最小字符数。对于行分隔符转换,宽度不适用;如果提供,将抛出异常。
示例输出将是:
1 --> 01
-1 --> -1
10 --> 10
122--> 122
答案 1 :(得分:0)
也许不是很优雅,但应该有效:
String s = ((totalNumberOfCars<10?"0":"")+totalNumberOfCars).substring(0,2);
答案 2 :(得分:-1)
String s = substring_safe(s,0,2);
static String substring_safe(String s,int start,int len){...} 这将预先检查长度并相应地采取行动(返回较小的字符串或带空格的垫)。