今天我在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());
}
}
答案 0 :(得分:6)
异常会要求您使用数组而不是逗号分隔字符串:
// 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)
什么应该与逗号,
一起使用。您的语法有一些内容,但在显示的代码中没有。
答案 1 :(得分:1)
这个问题的真正答案只是你的int类型。 您不必专门使用Object,但必须使用从Object继承的类型,而int是不从Object继承的原始类型,就像所有原始类型一样。 因此,您可以使用Integer而不是int来解决问题。
答案 2 :(得分:0)
我知道这很老,但是我有一个猜测。
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);
行应该可以正常工作。