2013-08-20 67 views
0

我想要做的是獲取數字的前2位數字。如果數字沒有超過1的數字,那麼它將添加前導零。java字符串格式方法

s變量等於「122」,但我想獲得前兩位數字是「12」。我認爲我的格式有問題。

例如,如果totalNumberOfCars等於6,那麼s變量將等於「06」。

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

編輯:是否有任何人知道的String.format( 「%02D」,totalNumberOfCars)呢?

+0

你爲什麼寫這一個:(totalNumberOfCars + 1)? – codeMan

+0

@codeMan我編輯過。實際上這並不重要。 – hellzone

回答

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

String s = substring_safe(s,0,2);

static String substring_safe(String s,int start,int len){...} 它將事先檢查長度並相應地採取行動(返回更小的字符串或填充空格)。

0

也許不是很優雅,但它應該工作:

String s = ((totalNumberOfCars<10?"0":"")+totalNumberOfCars).substring(0,2);