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 :

un goto en java!


Sujet :

Langage Java

  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut un goto en java!
    bonjour,
    je me demande comment fair un goto avec java....je sais que c'est quelque chose comme sa:
    etiquette:

    //code....

    continue etiquette;
    le probleme est que j'arive pas a declaré mon label....kel est la syntaxe exacte!

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    bonjour,

    pas de goto en java à ma connaissance, c'est pas un langage séquentiel...
    pourquoi avoir besoin d'un goto?

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par moon5 Voir le message
    bonjour,
    je me demande comment fair un goto avec java....je sais que c'est quelque chose comme sa:
    etiquette:

    //code....

    continue etiquette;
    le probleme est que j'arive pas a declaré mon label....kel est la syntaxe exacte!
    Syntaxiquement c'est exactement ça, tu fais etiquette: devant ta boucle...
    Mais c'est à ne pas utiliser !

  4. #4
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut
    oui, mais quand je compile il me donne une erreur comme quoi j'ais pas declarer mon label:etiquette!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 19
    Par défaut
    Voici un exemple qui devrait répondre amplement à ta question :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class MyClass {
        public void method(int a) {
            for (int i = 0; i < a; i++) {
                if (i == 3) {    // skip number three
                    continue label;
                }
                System.out.println(i);
            }
     
            label:
                System.out.println("Ca y est !");
        }

    ici tu remplaces label par l'identifiant que tu veux, et voilà ! Bien sûr, tu peux sortir de toute forme de boucle (for, while, switch) avec cette syntaxe .

    Il est je crois bien possible de faire un break label; pour sortir complètement de la boucle, mais je ne connais pas la différence exacte avec le continue...

    Au plaisir !

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par moon5 Voir le message
    oui, mais quand je compile il me donne une erreur comme quoi j'ais pas declarer mon label:etiquette!
    Montre ton code ET le message d'erreur complet...

  7. #7
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut
    voila le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     int j;
     int i = 1;
     label:
     j = tabChoi[i];
     
    if (tabGroup[j] != "Désactivé"){
            insert = "traitement";
        //un traitement specifique 
     
    }else{
         i = ++i;
         continue label;
    }
    l'erreur est la suivante:

    Error(413,15): undefined label: label


    je crois comprendre quand utilise le label qu'avec une boucle while , for ou switch, mais pas dans mon cas?

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par moon5 Voir le message
    voila le code:

    int j;
    int i = 1;
    label:
    j = tabChoi[i];

    if (tabGroup[j] != "Désactivé"){
    insert = "traitement";
    //un traitement specifique

    }else{
    i = ++i;
    continue label;
    }


    l'erreur est la suivante:

    Error(413,15): undefined label: label


    je crois comprendre quand utilise le label qu'avec une boucle while , for ou switch, mais pas dans mon cas?
    Oui effectivement dans ton cas, ça n'a pas de sens. D'ailleurs le continue ou break ne s'utilisent (même si ça n'est pas recommandé) que pour des boucles... Le break s'utilise également pr le switch, et là c'est utile...

    Mais dans ton cas il faudrait plutôt revoir ton algo

  9. #9
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Non continue s'utilise dans n'importe quel type de bloc même dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Test
    {
     public static void main(String args[])
     {
       {
         continue; //branchement
       }
       //ici
     }
    }

  10. #10
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut
    je crois que je vais faire mon test avec une petite boucle while, elle fera l'affair.........merci pour votre aide!!!!!!!!!

  11. #11
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Shugo78 Voir le message
    Non continue s'utilise dans n'importe quel type de bloc même dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Test
    {
     public static void main(String args[])
     {
       {
         continue; //branchement
       }
       //ici
     }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ javac Test.java
    Test.java:6: continue outside of loop
                            continue; // branchement
                            ^
    1 error

  12. #12
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    C'est break alors ?

  13. #13
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Shugo78 Voir le message
    C'est break alors ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class TestContinue {
     
    	public static void main(String args[]) {
    		{
    			break; // branchement
    		}
    		// ici
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ javac Test.java
    Test.java:6: break outside switch or loop
                            break; // branchement
                            ^
    1 error

  14. #14
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Tsss.
    J'étais pourtant pérsuadé que ça marchait
    Et avec une étiquette ?

  15. #15
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    58
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 58
    Par défaut
    En effet oui, en Java, les etiquettes sont utilisees que pour indiquer a quelle boucle sauter (continue) ou interrompre (break). (donc on peut placer une etiquette seulement devant une boucle)

    Par exemple:
    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
     
    etiquette:boucle1
    {
           boucle2
           {
                  boucle3
                  {
                        if (condition)
                        {
                                 continue etiquette;
                        }
                        else
                        {
                                 break etiquette;
                         }     
                  }
           }
    }
    Dans ce pseudocode, si condition == true, alors boucle2 et boucle3 seront interrompus et l'execution va continuer avec le pas souivant de la boucle1. Au cas contraire toutes les trois boucles seront interrompues.

    J'espere que ca te sera utile
    Bonne chance!

Discussions similaires

  1. La syntaxe de goto en Java
    Par sabrinabest dans le forum Langage
    Réponses: 25
    Dernier message: 15/01/2015, 12h04
  2. Portage code VB6 en Java : problème avec les GOTOs
    Par youness78 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/10/2009, 14h21
  3. Goto VB6 en Java
    Par youness78 dans le forum Langage
    Réponses: 6
    Dernier message: 23/10/2009, 18h56
  4. utilisation de jump ou de goto dans java
    Par dracula2000 dans le forum Langage
    Réponses: 5
    Dernier message: 06/03/2006, 11h27
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

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