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 :

[debutante] explication "outer:" dans le code


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 27
    Points : 28
    Points
    28
    Par défaut [debutante] explication "outer:" dans le code
    Bonjour,

    J'aimerais comprendre ce que l'auteur a voulu faire en mettant outer ici :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    outer:
                while ( (c =  argopt.getArguments()) != -1 ){
                    switch (c) {
                    case 'c':
                        canonical = true;
                        break;
                    case 'e':
                        encoding      = argopt.getStringParameter();
                        if ( encoding != null && isValidJavaEncoding( encoding ) )
                            setWriterEncoding( encoding );
                        else {
                            printValidJavaEncoding();
                            System.exit( 1 );
                        }
                        break;
                    case 'v':
                        setValidation = true;
                        break;
                    case 'V':
                        setValidation = false;
                        break;
                    case 'N':
                        setNameSpaces = false;
                        break;
                    case 'n':
                        setNameSpaces = true;
                        break;
                    case 'p':
                        parserName    = argopt.getStringParameter();
                        break;
                    case 'd':
                        setDeferredDOM = true;
                        break;
                    case 'D':
                        setDeferredDOM = false;
                        break;
                    case 's':
                        setSchemaSupport = true;
                        break;
                    case 'S':
                        setSchemaSupport = false;
                        break;
                    case 'f':
                        setSchemaFullSupport = true;
                        break;
                    case 'F':
                        setSchemaFullSupport = false;
                        break;
                    case '?':
                    case 'h':
                    case '-':
                        argopt.printUsage();
                        System.exit(1);
                        break;
                    case -1:
                        break outer;
                    default:
                        break;
                    }
                }

  2. #2
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 42
    Points : 50
    Points
    50
    Par défaut
    Salut,

    'outer' ici est mis comme un label (un identificateur), il délimite une portion de code et ce type de programmation est usuel en assembleur et s'utilise avec 'goto' ou break. Si tu vois bien la fin du code il met 'break outer', en gros on arrete l'exécution de cette portion de code et cela s'appelle arret/branchement inconditionnel.
    Cette forme de programmation est à éviter en langage évolué (c, c++, java,...)

    A+

  3. #3
    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,


    'outer' est un label associé à ta boucle while, qui permet de manipuler différemment les boucles et conditions avec break et continue...

    Normalement break sert à stopper la boucle courante ou à sortir du switch. Dans ce cas le break outer ne sortira pas du switch mais carrément de la boucle while qui lui est associé...

    Un exemple serait peut-être mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            outer&#58; for &#40;int i=0; i<100; i++&#41; &#123;
     
                System.out.println&#40;"i = " + i&#41;;
     
    	        switch &#40;i&#41; &#123;
    	            case 0&#58; break;
    	            case 1&#58; break;
    	            case 2&#58; break outer;
    	        &#125;
            &#125;
    Normalement cette boucle devrait itérer 100 fois, mais elle est stoppé lorsque i atteint la valeur 2 puisque le break outer arrêtera la boucle. Elle n'affichera donc que :

    Mais bon généralement ce genre de code peut être évité car ce n'est pas très propre ni facile à lire (c'est de la programmation par goto )...

    Surtout que dans cet exemple le cas de c==-1 est déjà géré dans la boucle while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while &#40; &#40;c =  argopt.getArguments&#40;&#41;&#41; != -1 &#41;
    a++

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Merci bcp!!

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 01/08/2008, 12h40

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