簡體   English   中英

如何在Java 8中使用String.format?

[英]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;

如上,您將hoursecondminute聲明為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM