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 :

Probleme instruction switch


Sujet :

Langage Java

  1. #1
    Membre du Club Avatar de mpascolo
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 64
    Points : 52
    Points
    52
    Par défaut Probleme instruction switch
    Salut a tous

    Je viens de me rendre compte que l'instruction switch ne concerne que les entiers ou les caracteres ...

    L'instruction switch
    L'instruction switch permet d'exécuter des instructions différentes selon la valeur que prend une variable. Elle a la forme générale suivante :

    switch (var) {
    case val1 : instructions;
    case val2 : instructions;
    default : instructions;
    }


    La variable testée doit être de type entier ou de type caractère. Les valeurs val1, val2, ... doivent être des constantes. La clause default permet de donner des instructions à exécuter si la variable a une valeur différente de celles qui sont prévues. Attention : dès qu'un cas correspond à la valeur de la variable, toutes les instructions qui suivent sont exécutées; on utilise le mot-clé BREAK pour sortir de la boucle.
    Existe t-il une methode identique à celle ci pour les variables String ?

    VOici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    String NomChamp;
     
    [...]
     
      switch (NomChamp){
            case "Table" :
    	        System.out.println("On traite le champs Table");
    	        break;
             case "Amount2" :
    	        System.out.println("On traite le champ Amount2");
    	        break;
             default :
    	        System.out.println("RAS");
              }
    Je peux bien sur traiter ceci avec des If en pagaille ... Mais je trouverais plus simple d'utiliser l'instruction switch ...

    Merci d'avance ...

  2. #2
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    Malheureusement pas,

    Du moins pas en 1.4
    En 1.5 j'en suis pas sur.

    Bon au pire tu peux switcher sur le hashcode de ta String mais bon...

  3. #3
    Membre du Club Avatar de mpascolo
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 64
    Points : 52
    Points
    52
    Par défaut
    Vraiment dommage !!!

    Je vais devoir creer 35 instructions IF ... SUPER !!!

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Ce n'est toujours pas possible avec Java 5, cependant les enums peuvent être une bonne alternative (cf faq : [Java 5.0] Qu'est-ce qu'une enum (type énuméré) ? ).

  5. #5
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    J'en ai fait 200 y a pas si longtemps

    Vive le copier coller. D'ailleurs ça va aussi vite que de faire un switch.

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ben sinon tu crées autant de constantes char ou int et tu te fais une méthode qui te renvoie la bonne constante en fonction de ta chaine.

    mais bon ça ne fait que déplacer le problème. Tout dépend de ce que sont tes strings ? c'est une variable de classe ?

  7. #7
    Membre du Club Avatar de mpascolo
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 64
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Satch
    J'en ai fait 200 y a pas si longtemps

    Vive le copier coller. D'ailleurs ça va aussi vite que de faire un switch.

    Ben moi qui pensais etre un AS ...

    Merci en tout cas pour vos precisions ...

    SUJET RESOLU ...

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par le y@m's
    Ce n'est toujours pas possible avec Java 5,
    Ni dans Java 6... mais peut-être pour Java 7...

    Citation Envoyé par le y@m's
    cependant les enums peuvent être une bonne alternative
    En effet ! Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        enum Clef {
            Table, Amount2;
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            switch (Clef.valueOf(NomChamp)) {
            case Table:
                // ...
                break;
            case Amount2:
                // ...
                break;
            default:
            }
    Sinon on peut également utiliser une Map avec une correspondance String->Runnable...

    a++

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

Discussions similaires

  1. Problème de switch !!!!!!
    Par King_T dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2006, 18h18
  2. [Language]Probleme de switch case
    Par nana1 dans le forum Langage
    Réponses: 20
    Dernier message: 17/11/2005, 00h49
  3. instruction switch
    Par artatum dans le forum C
    Réponses: 5
    Dernier message: 28/09/2005, 17h20
  4. [Info] Instruction switch
    Par HNT dans le forum Langage
    Réponses: 6
    Dernier message: 23/09/2005, 16h47
  5. [débutant] Probleme avec switch et héritage
    Par durk dans le forum Langage
    Réponses: 2
    Dernier message: 21/04/2005, 09h48

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