0

我想要做的是获得一个数字的前 2 位数字。如果 number 的数字不超过 1,那么它将添加前导零。

s 变量等于“122”,但我想获得前 2 位数字,即“12”。我认为我的格式有问题。

例如,如果 totalNumberOfCars 等于 6,则 s 变量将等于“06”。

int totalNumberOfCars = 122;
String s = String.format("%02d", (totalNumberOfCars + 1))

编辑:有谁知道 String.format("%02d", totalNumberOfCars) 做什么?

4

3 回答 3

2

恐怕这String.format()行不通,请参阅http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax

但是您的格式字符串将是子字符串的一个很好的起点,因为任何 if 都是不必要的:

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
于 2013-08-20T12:33:32.707 回答
0

也许不是很优雅,但它应该可以工作:

String s = ((totalNumberOfCars<10?"0":"")+totalNumberOfCars).substring(0,2);
于 2013-08-20T12:03:48.710 回答
-1

字符串 s = substring_safe (s, 0, 2);

static String substring_safe (String s, int start, int len) { ... } 将预先检查长度并采取相应措施(返回较小的字符串或用空格填充)。

于 2013-08-20T11:55:47.527 回答