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

raj*_*jan -1 java string java-8

今天我在java 8中用eclipse Kepler编写了一个简单的程序.实际上,我从一些视频教程中复制了它.在那个教程中,它运行了,但在我的计算机中却没有.错误行是

 String.format("%02d:%02d:%02d",hour,minute,second);
Run Code Online (Sandbox Code Playgroud)

我不明白这里的错误是什么.它突出了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());
    }
}
Run Code Online (Sandbox Code Playgroud)

Jor*_*lla 6

异常会要求您使用数组而不是逗号分隔的字符串:

// incorrect
String.format("%02d:%02d:%02d",hour,minute,second);

// fast but correct
Object[] data = { hour, minute, second };
String.format("%02d:%02d:%02d", data);
Run Code Online (Sandbox Code Playgroud)

但实际上,方法format(String,object[])不存在String,它是:format(String pattern, Object... arguments)什么应该用逗号,.您的语法有一些东西,但在显示的代码中没有.