<java> display regular time

Fermé
domxaline Messages postés 188 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 7 mars 2018 - 31 mai 2010 à 16:03
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 1 juin 2010 à 14:28
Bonjour,
bonjour expliquez moi cette ligne s'il vous plaît
return String.format("%d: %02d: %02d %s",((hour==0||hour==12)?12:hour%12),minute,second,(hour<12?"AM":"PM"));

j'ai compris jusqu'à là
%02d veut dire 2 decimales

s veut dire string

hour==0||hour==12)?12:hour%12 veut dire
si hour strictement egal 0 ou hour strictement egal 12 on met 12 si non
à partir de là je ne comprends pas

package javaapplication1;
public class Tuna
{
    private int hour;
    private int minute;
    private int second;
 
    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 toMilitary()
    {
        return String.format("%02d:%02d:%02d",hour,minute,second);
    }
    public String toString()
    {
        return String.format("%d: %02d: %02d %s",((hour==0||hour==12)?12:hour%12),minute,second,(hour<12?"AM":"PM"));
    }
}
package javaapplication1;
 
public class Apples
{
 public static void main(String[]args)
   {
     Tuna tunaObject=new Tuna ();
     System.out.println(tunaObject.toMilitary());
     System.out.println(tunaObject.toString());
     tunaObject.setTime(13,27,6);
     System.out.println(tunaObject.toMilitary());
     System.out.println(tunaObject.toString());
   }
)
 



A voir également:

3 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
31 mai 2010 à 16:29
Bonjour,

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


« j'ai compris jusqu'à là
%02d veut dire 2 decimales

s veut dire string

hour==0||hour==12)?12:hour%12 veut dire
si hour strictement egal 0 ou hour strictement egal 12 on met 12 si non... »

Voilà la suite :

... on met la portion congrue de l'heure modulo 12. (donc pour 5h, on met 5h, pour 13h, on met 1h, pour 20h, on met 8h, etc.)

Ensuite, on met les minutes, puis les secondes.
Et finalement, si l'heure est < 12, on met AM (matin), et si l'heure est >= 12, on met PM (après-midi).

Xavier
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
31 mai 2010 à 16:43
hour%12 signifie hour modulo 12.
En gros tu divise hour par 12 et tu prends le reste de cette division.

Donc par exemple si hour = 13
hour%12 = reste de 13/12 = 1
0
domxaline Messages postés 188 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 7 mars 2018 10
31 mai 2010 à 17:39
merci beaucoup, j'ai compris
0
Utilisateur anonyme
31 mai 2010 à 17:59
Salut,

J'ajoute qu'on utilise l'opérateur conditionnel (?:) également appelé opérateur ternaire dont le format est:

opérande1 ? opérande2 : opérande 3

opérande1 doit être une expression booléenne.

L'exécution se réalise de la manière suivante:
Si le résultat de l'évaluation de opérande1 est true le résultat est opérande2.
Sinon, le résultat est opérande3.

Cordialement,

Dan
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
1 juin 2010 à 14:28
Bonjour,

La phrase « l'opérateur conditionnel (?:) également appelé opérateur ternaire » me gène un peu, car elle laisse entendre que "opérateur ternaire" est égal à (?:), alors que "opérateur ternaire" signifie juste que c'est un opérateur qui prend trois opérandes, contrairement aux opérateurs binaires qui en prennent deux (+, ==, <, *, &&, etc.) et aux opérateurs unaires, qui n'en prennent qu'un seul (typiquement, le ! booléen)

Xavier
0