Java初学者问题 - String.format

时间:2011-07-14 10:52:24

标签: java formatting

当我在另一个类中调用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");

    }

}

5 个答案:

答案 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,您可以将第四个参数包含为字符串。