【发布时间】:2015-05-25 13:58:00
【问题描述】:
今天我用java 8在eclipse Kepler中写了一个简单的程序。实际上,我是从一些视频教程中复制的。在那个教程中,它运行了,但在我的电脑上却没有。错误行是
String.format("%02d:%02d:%02d",hour,minute,second);
我不明白这里的错误是什么。
它突出了String类型中的方法format(String,object[])不适用于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());
}
}
【问题讨论】:
-
如例外所述,您必须将格式化参数作为数组提供,而不是作为单个参数提供。
-
这里使用 Java 8。我无法重现此错误。您认为您可以向我们展示更多代码吗?你确定你也在使用 Java 8 吗?
-
String.format是在 Java 5 中引入的,从那时起它接受Object...,我只是不明白 ypu 是如何滥用标准库来获得这个结果的。 -
阅读此内容:What is "compiler compliance level" in Eclipse?,将您的级别设置为 java 8,然后开心。