Demande d'explicat d'une instruction java!!!

Résolu
kazis -  
 danimo -
Bonjour,
je voudrais savoir ce que ça veut bien signifier ce bout de code java,la premiére est une affectation du resultat d'une methode length() à une cariable de type double "len",la secone est aussi une affectation à la même variable :s mais ce qui suit càd ""(len>MINLEN) ? len : MINLEN;"" je comprends pas du tout c'est nouveau pour moi,est ce que cette notation a un nom,....et que peut elle bien signifier:

double len = length();
len = (len >= MINLEN) ? len : MINLEN;

Merci pour votre aide.

4 réponses

  1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    c'est une notation de test
    si (len >= MINLEN) alors len sera egal a len sinon len sera egal a MINLEN
    1
    1. kazis
       
      si je comprend bien ça veut dire:

      if(len>=MINLEN)
      {len=len;} //quelle est l'utilité de cette instruction?
      else
      {len=MINLEN;}

      Donc si je comprend bien ça veut dire qu'on va attribuer à len la valeur minimale,mais pourquoi n'écrit t-on pas tout simplement,

      if(len<MINLEN)
      len=MINLEN; //et puis c'est tout :s


      Merci pour votre aide :)
      0
  2. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    oui c'est equivalent a
    if(len<MINLEN) 
    len=MINLEN;

    apres pourquoi le programmeur a choisi cette notation... je sais pas c'est un choix de sa part c'est tout
    1
    1. kazis
       
      Merci beaucoup :)
      0
  3. danimo
     
    Salut,

    -Désolé, mais
    double len = length(); ne veut rien dire.
    length() ne s'applique qu'à un String et permet d'obtenir la longueur d'un objet String.

    Exemple:
    String toto = "Bonjour,";
    int len = toto.length();
    System.out.println("len = " + len + "\n");
    et donnera len = 8

    -len = (len >= MINLEN) ? len : MINLEN;
    Ici on a certainement voulu contrôler que len est bien supérieure ou égale à la valeur contenue dans MINLEN, mais encore une fois c'est faut.

    Exemple avec le résultat obtenu ci-dessus:

    int minlen = 5; // je préfère minlen à MINLEN
    System.out.println("Avec minlen = " + minlen + "\n");
    if (len >= minlen)
    System.out.println("len " + len + "est bien > ou = à " + minlen + " C'est bon !!!\n");

    Par contre si on avait:
    minlen = 10;
    System.out.println("Avec minlen = " + minlen + "\n");
    if (len >= minlen)
    System.out.println("len = " + len + "est < à " + minlen + " C'est faux !!!")

    Cordialement,

    Dan
    0
    1. kazis
       
      Bonjour,
      c'est vrai que length() est une méthode prédéfinie et qui permet de donner la longueur d'une chaine de caractères dans le cadre d'une instance d'un objet de type String,sauf que de dans le cas présent,le length() est une méthode définie par le programmeur au niveau de la même classe où se trouve le code pré-cité et qui permet de retourner une distance euclidienne.
      encore une question qui se pose: ne devrait on pas précédé length(),par une instance de l'objet,en l'occurence,un this par exemple?(de la maniéré suivante:this.length())!!!
      Respectueusement,
      KAZIS.
      0
  4. danimo
     
    Salut,
    Pour ceux qui voudraient plus d'infos sur l'utilisation de cette "notation" je propose cet exemple plus parlant:

    J'ai par exemple un nombre de jours dans int nbJours et je veux afficher par exemple:

    Dans 25 jours je serai en vacances ou Dans 1 jour je serai en vacances (avec le "s" éventuel).

    int nbJours = 25;
    String str = "Dans " + nbJours + " jour" + (nbJours<2?"":"s") + " je serai en vacances";
    System.out.println(str);

    nbJours = 1;
    str = "Dans " + nbJours + " jour" + (nbJours<2?"":"s") + " je serai en vacances";
    System.out.println(str);

    Comment interpréter (nbJours<2?"":"s"):

    si nbjours est <2 (le ?)
    "" on n'ajoute rien à " jour"
    sinon (le :)
    "s" on ajoute s à " jour"

    On pouvait aussi utiliser (nbJours>1?"s":"")

    Cordialement,

    Dan
    0