<java> display regular time

domxaline Messages postés 188 Date d'inscription   Statut Membre Dernière intervention   -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
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 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
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   Statut Membre Dernière intervention   10
 
merci beaucoup, j'ai compris
0
Utilisateur anonyme
 
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 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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