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

avec Java Discussion :

Besoin d'un hint concernant les switch


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Besoin d'un hint concernant les switch
    Salut à tous, j'ai une question à poser aux AS du Java.
    y'a t'il moyen de d'utiliser un Switch avec des valeur en intervalles comme paramétres.
    Je m'explique:

    si >=25 faire a;
    si <25 && >=18 faire b;
    si <18 && >=2 faire c;
    si <2 faire d;

    je pensais le faire avec un switch statement mais je ne trouve pas la façon de le faire. À moins qu'il faut absolument des valeurs fixe pour utiliser le switch.
    Pouvez-vous m'éclairer?

    merci d'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 100
    Points : 89
    Points
    89
    Par défaut
    Bonsoir,

    Si c'est pour des intervalles d'entiers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    switch (i) 
    { 
    case 1: <faire d>; break; 
    case 2 :  <faire c>;break;
    ...
    case 17 : <faire c>;break;
    case 18 :  <faire b>;break;
    ...
    case 24 : <faire b>;break;
    default: 
    if (i>=25) 
    <faire a>; 
    }
    http://download.oracle.com/javase/tu...ts/switch.html

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Ok merci pour la réponse,
    si je comprend bien dans un cas pareil, il vaut mieux utiliser des ''if'' et "else if'' (ex. if (x>= 25{ a }
    else if(x>=18 && x<25{b}
    ....
    que de se taper toutes les valeurs possible dans des cases.
    À moins que chaque case renvoie une valeur differente...

    merci encore.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 100
    Points : 89
    Points
    89
    Par défaut
    ça depend de ton utilisation , dans certains cas switch est plus rapide que if, et dans d'autres cas elle est plus lente, voir ci-dessous (en c#):

    http://www.dotnetperls.com/switch-slow

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Soit tu utilise directement une imbrication de if/esle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(x >=25){
    }
    else if(x <25 && x >=18){
    }
    else if(x <18&& x >=2){
    }
    else{
    }
    Soit il va te falloir un la création d'un énuméré pour regrouper les cas.
    Avoir une fonction de conversion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public AlgoCase getAlgoCaseForX(int X){
         if(x >=25){
              return AlgoCase.A;
         }
         else if(x <25 && x >=18){
         }
              return AlgoCase.B;
         }
         else if(x <18&& x >=2){
              return AlgoCase.C;
         }
         else{
              return AlgoCase.D;
         }
    Et utiliser le tout pour un switch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    switch(getAlgoCaseForX(x))
    {
         case AlgoCase.A:
                   //TODO A;
         break; 
         case AlgoCase.B:
                   //TODO B;
         break; 
         case AlgoCase.C:
                   //TODO C;
         break; 
         case AlgoCase.D:
                   //TODO D;
         break;
         default:
         System.err.println("AlgoCase unknown !");
         break;
    }
    La première solution est très bien pour un traitement en "oneshot".
    La seconde solution est plus destiné à un traitement récurant par rapport à cet état.

    Cordialement,
    Patrick Kolodziejzyk.

    PS : Je déconseille l'utilisation dans le même temps de if et de switch pour séparé les cas de traitement.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Merci à tous. Je vois la difference.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/10/2010, 10h19
  2. besoin d'explications.. flex - flash concernant les classes
    Par italya dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 27/03/2010, 11h43
  3. J'ai besoin de votre aide "concernant les scripts"
    Par lotfi50 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 29/09/2008, 23h34
  4. Besoin de clarification concernant les formulaires
    Par SavageMessiah dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2007, 01h24
  5. Concerne les graphes
    Par mcr dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 12/11/2002, 11h02

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