[英]How to use String.format in java 8?
今天,我用Java 8中的eclipse Kepler寫了一個簡單的程序。實際上,我從一些視頻教程中復制了它。 在該教程中,它運行了,但是在我的計算機中卻沒有。 錯誤行是
String.format("%02d:%02d:%02d",hour,minute,second);
我不明白這里的錯誤。 它突出了方法format(String,object[])
中的類型String
是不適用的argument(String, int, int, int)
public class Demo {
private int hour;
private int second;
private int minute;
public void setTime(int h,int m,int s){
hour=((h>=0 && h<24)?h:0);
minute=((m>=0 && m<60)?m:0);
second=((s>=0 && s<60)?s:0);
}
public String railwayTime(){
return String.format("%02d:%02d:%02d",hour,minute,second);//error in this line
}
public String regular(){
return String.format("%02d:%02d:%02d %s",((hour==0 ||hour==24)?12:(hour%12)), minute, second, (hour>=12)?"AM":"PM");//error in this line
}
}
public class ShowTime {
public static void main(String[] args){
Demo d=new Demo();
System.out.println(d.railwayTime());
System.out.println(d.regular());
}
}
該異常會要求您提供一個數組,而不是逗號分隔的字符串:
// incorrect
String.format("%02d:%02d:%02d",hour,minute,second);
// fast but correct
Object[] data = { hour, minute, second };
String.format("%02d:%02d:%02d", data);
但實際上,方法format(String,object[])
在String
中不存在,它是: format(String pattern, Object... arguments)
應該使用逗號,
。 您的語法有問題,但顯示的代碼中沒有。
一個真正的解決方案只是您的int類型。 您不必專門使用Object,而必須使用從Object繼承的類型,而int是不從Object繼承的原始類型,就像所有原始類型一樣。 因此,您可以使用Integer而不是int來解決問題。
我知道這很老,但我有一個猜測。
private int hour;
private int second;
private int minute;
如上,您將hour
, second
和minute
聲明為int類型,這是原始數據類型,並且與Object
類型不兼容。
您可能想將它們更改為:
private Integer hour;
private Integer second;
private Integer minute;
Integer
是基本類型int
的包裝,用於對其進行對象化。 到那時,這行String.format("%02d:%02d:%02d",hour,minute,second);
應該工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.