IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Opérateur ternaire


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 225
    Points : 85
    Points
    85
    Par défaut Opérateur ternaire
    Bonjour,

    Est ce la structure ((A=B)?C) en C++ est possible en java aussi?

    MErci

  2. #2
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Oui tu fais:


  3. #3
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 225
    Points : 85
    Points
    85
    Par défaut
    Merci
    j'essai de le faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    (!Fucntion1()) ? A.action() : System.out.println("test bidon"); 
     
     
    Fucntion1 retourne un boolean
    A une instance d'objet


    Mais ça ce marche pas

  4. #4
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    bonjour,

    Normal tu ne peux utiliser cette instruction que dans un cas comme celui ci :

    N'oublie pas que d'écrire des lignes pareilles est déconseillé

    voilà

    bon courage

  5. #5
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Soit

    (a == b) c : d;

    c et d doivent être de même type.

    Et si ce sont des méthodes elles doivent renvoyer le même type de retour...

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 225
    Points : 85
    Points
    85
    Par défaut
    Merci pour ces précieuses précisions.

  7. #7
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Citation Envoyé par yann2
    bonjour,

    Normal tu ne peux utiliser cette instruction que dans un cas comme celui ci :

    N'oublie pas que d'écrire des lignes pareilles est déconseillé

    voilà

    bon courage
    c'est totalement faux

    Tu peux très bien faire

    retour = (!test()) ? function1() : function2();

    A condition que function1 et function2 renvoient le même type de donnée...

  8. #8
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    N'oublie pas que d'écrire des lignes pareilles est déconseillé
    Depuis quand c'est déconseillé !!!

    Mieux vaut-il écrire

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (a == b) {
      // c
    }
    else {
      // d
    }
    C'est pas que c'est déconseillé, c'est qu'il ne faut pas en abuser et rester toujours lisible

    ne pas faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((temp = (test1() ? function1() : function2()).test2()) != null)

  9. #9
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Ben, c'est très partique, ça tient sur une ligne...

    Mais le problème, c'est que c'est illisible.

    Et c'est pas sûr que ce soit plus rapide qu'un if...else...

    De plus cet opérateur existe en Java seulement parce qu'il existe en C

  10. #10
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    De plus cet opérateur existe en Java seulement parce qu'il existe en C
    Non il existe parceque il est très partique...

    Ca évite tout simplement un emilement de if... else...

  11. #11
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Si tu le dis ...

  12. #12
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Citation Envoyé par thibaut
    Citation Envoyé par yann2
    bonjour,

    Normal tu ne peux utiliser cette instruction que dans un cas comme celui ci :

    N'oublie pas que d'écrire des lignes pareilles est déconseillé

    voilà

    bon courage
    c'est totalement faux

    Tu peux très bien faire

    retour = (!test()) ? function1() : function2();

    A condition que function1 et function2 renvoient le même type de donnée...
    Mais,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    retour = (!test()) ? function1() : function2();
    Ca correspond au cas que j'ai donné. A part les fonctions, je ne vois pas la
    différence.

  13. #13
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Ton exemple semble supposer que tu ne peux qu'utiliser une comparaison pour retourner un valeur booléenne.

  14. #14
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Euh
    desole si l'exemple n'était pas bon.

    Par contre, il est impossible que l'on puisse penser une valeur booléenne
    en retour. Que vaut true>false ???

    M'enfin, on ne va pas polémiquer la dessus .

  15. #15
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Par contre, il est impossible que l'on puisse penser une valeur booléenne
    en retour. Que vaut true>false ???
    Tu as tout à fait raison... et en plus true > false est impossible.

    C'était juste pour généraliser ton exemple ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. else if avec l'opérateur ternaire
    Par punky_brooster dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2006, 21h16
  2. Réponses: 12
    Dernier message: 11/04/2006, 11h41
  3. opérateur ternaire
    Par the big ben 5 dans le forum Langage
    Réponses: 7
    Dernier message: 23/02/2006, 18h06
  4. Equivalant opérateur ternaire C++
    Par Pero dans le forum Langage
    Réponses: 5
    Dernier message: 07/10/2005, 09h44
  5. [java] pb Opérateur ternaire
    Par phileme dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 04/07/2004, 13h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo