当我在另一个类中调用displayTime12hrclock方法时,它拒绝打印出AM或PM。我无法理解为什么。
public class Tuna {
private int hour;
private int minute;
private int second;
public void setTime(int h, int m, int s){
hour = h;
minute = m;
second = s;
hour = ((h>= 0 && h <=24 ? h:0));
minute = ((m>= 0 && m <=60 ? m:0));
second = ((s>= 0 && s <=60 ? s:0));
}
public String displayTime(){
return String.format("%02d:%02d:%02d", hour,minute,second);
}
public String displayTime12hrclock(){
return String.format("%d:%02d:%02d", ((hour==0 || hour ==12)?12:hour%12), minute, second, (hour >=12)? "AM":"PM");
}
}
答案 0 :(得分:5)
因为你传递了4个参数并且只用你的格式评估了3个。
"%d:%02d:%02d" <- here are only 3 parameters referenced
答案 1 :(得分:4)
您将四个参数传递给format
,但只显示三个。试试这个:
return String.format("%d:%02d:%02d %s", ((hour==0 || hour ==12)?12:hour%12), minute, second, (hour >=12)? "AM":"PM");
答案 2 :(得分:1)
您的String.format缺少%s。以下应该有效...
String.format("%d:%02d:%02d %s", ((hour==0 || hour ==12)?12:hour%12), minute, second, (hour >=12)? "AM":"PM");
答案 3 :(得分:1)
在格式中只有3个字段%d,你将4传递给它(小时,分钟,秒,上午/下午)。
忽略最后一个
作为旁注,当你变得更加舒适时,请检查
java.util.Date java.util.Calendar中 java.util.SimpleDateFormat
Java API很广泛,可能需要一些时间来学习,但做了很多事情!
答案 4 :(得分:0)
您的格式只有三个值。
尝试将其更改为:
String.format("%d:%02d:%02d %s", ((hour==0 || hour ==12)?12:hour%12), minute, second, (hour >=12)? "AM":"PM");
请注意上一个%s
。您的格式只有三个引用(%d
),因此它只采用指定的前三个参数。通过添加%s
,您可以将第四个参数包含为字符串。