Вопрос новичка в Java - String.format - PullRequest
1 голос
/ 14 июля 2011

Когда я вызываю метод 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 ]

5 голосов
/ 14 июля 2011

Поскольку вы передаете 4 параметра и оцениваете только 3 в вашем формате.

"%d:%02d:%02d" <- here are only 3 parameters referenced
4 голосов
/ 14 июля 2011

Вы передаете четыре параметра в format, но отображаете только три. Попробуйте это:

return String.format("%d:%02d:%02d %s", ((hour==0 || hour ==12)?12:hour%12), minute, second, (hour >=12)? "AM":"PM");
1 голос
/ 14 июля 2011

В формате есть только 3 поля% d, вы передаете ему 4 (часы, минуты, секунды, AM / PM).

Последнее игнорируется

Какпримечание: если вам удобнее, отметьте

java.util.Date java.util.Calendar java.util.SimpleDateFormat

API Java обширный и может потребовать времени для изучения, номного чего делает!

1 голос
/ 14 июля 2011

В вашем String.format отсутствует% s.Следующее должно работать ...

String.format("%d:%02d:%02d %s", ((hour==0 || hour ==12)?12:hour%12), minute, second, (hour >=12)? "AM":"PM");
0 голосов
/ 14 июля 2011

У вас есть только три значения в вашем формате.

Попробуйте изменить его следующим образом:

String.format("%d:%02d:%02d %s", ((hour==0 || hour ==12)?12:hour%12), minute, second, (hour >=12)? "AM":"PM");

Обратите внимание на последнее %s.У вас было только три ссылки (%d) в вашем формате, поэтому он принимал только первые три указанных аргумента.Добавляя %s, вы включаете четвертый аргумент в виде строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...