2013-01-24 79 views
3

我一直在尋找一個快速簡便的方法來格式化INT成一個字符串以兩個前導零。我發現這個https://stackoverflow.com/a/4377337/47690的答案,它看起來像我需要的。所以我實現它是這樣的String.format不會允許INT

int i = 34; //could be any value but you get the idea 
String.format("%03d", i); 

但是,Eclipse的似乎呻吟有關的String.format需要它的第二個參數Object[]的事實。這裏發生了什麼?

+2

代碼的罰款。你使用的是什麼版本的Java和Eclipse? – NPE

+1

你可以請(總是)也發佈完整的錯誤信息? – jlordo

+1

也爲我運行..嘗試在Eclipse中清理項目:'Project - > Clean' – cowls

回答

4

檢查你的項目設置

project -> Properties -> Java Compiler -> Compiler compliance level 

你可能在Java 1.4中不承認VARARG

String format(String format, Object ... args) 
+0

我可以踢自己不先找這個。 – Gareth

1

下面的編譯和Java 7下運行良好(和Eclipse朱諾SR1是滿意的):

public class Main { 
    public static void main(String[] args) { 
     int i = 42; 
     System.out.println(String.format("%03d", i)); 
    } 
} 

錯誤消息是紅鯡魚:即使最後一個參數是Object...(又名Object[]) ,自動裝箱照顧一切。

我懷疑你使用的是Java和/或Eclipse的,過時的版本或編譯器兼容級別在Eclipse項目設置爲預1.5(即使你使用的是1.5或更高版本)。

+0

它可能是項目的語言級別。如果它設置爲舊版本,則可能會禁用自動拆箱。 – dunni

5

如果你要打印的i值,你可以使用:

System.out.printf("%03d", i); 

代替

System.out.println(String.format("%03d", i)); 

編輯:

此外,我想你在Java代碼6,它沒有工作。所以,我用printf()。 喔。抱歉!我清理了這個項目並且工作。

我使用的Java 6和Eclipse赫利俄斯。

+0

有用的提示,但不回答問題:)。奇怪的是,我嘗試在Java 6中,它仍然在Eclipse編譯..嗯 – cowls

0

一個String =的String.format( 「%04D」,我);

這個代碼代表在4個位串等等..如果u使用%04D我會得到兩個試運行零前面

雖然INT I是一種原始的和期待的對象作爲參數,

其JVM將採取內部照顧轉換爲對象數據類型

認爲這是每個Java實現..

public static String format(String format, Object ... args) { 
return new Formatter().format(format, args).toString(); 
} 

示例代碼用於動態追加零...

進口的java.text。DecimalFormat的; 公共類ArrayTest中{

public static void main(String[] args) { 
    int i = 34; //could be any value but you get the idea 
    int zeroCount = 2; 

    String s = String.format("%d", i); 
    int length = s.length()+zeroCount; 

    System.out.println(String.format("%0"+length+"d", i)); 

    // second way u can achieve 
    DecimalFormat decimalFormat = new DecimalFormat(); 
    decimalFormat.setMinimumIntegerDigits(length); 
    System.err.println(decimalFormat.format(i)); 
} 

}

而且即將System.format的參數可以採取無限沒有。參數爲一個可變參數對象作爲第二個參數

檢查這個網址 http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#format%28java.lang.String,%20java.lang.Object...%29