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 :

Variable rebelle ?


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 126
    Par défaut Variable rebelle ?
    Bonjour à tous,

    J'essaye de faire revenir grâce à la fonction afficherMenu() la valeur d'option du menu pour la traiter dans le main, mais les méthodes ne se déclenchent qu'à la deuxième tentative lors de la saisie utilisateur ... Que se passe t'il ? Merci


    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
    62
    63
    64
    65
    66
    public static void main(String[] args) {
     
    		// Tableaux de données
     
    		String tabSections[] = new String[25];
    		String tabArticles[] = new String[100];
    		int[][] tabLignes = new int[3][100];
     
    		Terminal.sautDeLigne();
    		Terminal.ecrireString("\t"
    				+ "---------- Logiciel d'édition de devis / factures ----------");
    		Terminal.sautDeLigne();
    		afficherMenu();
     
    		// Déclenche les méthodes suivant le choix effectué dans le menu
    		// principal
     
    		int varChoixMenu=afficherMenu();
     
    		if (varChoixMenu == 1) {
    			creerSection(tabSections);
    		}
    		if (varChoixMenu == 2) {
    			afficherSections(tabSections);
    		}
    	}
     
    	public static int afficherMenu() {
     
    		// Affichage du menu principal
     
    		int varChoixMenu = 0;
     
    		Terminal.sautDeLigne();
    		Terminal.ecrireStringln("\t" + "\t" + "\t"
    				+ "1: Creer nouvelle section");
    		Terminal.ecrireStringln("\t" + "\t" + "\t"
    				+ "2: Ouvrir une section existante");
    		Terminal.ecrireStringln("\t" + "\t" + "\t" + "3: Supprimer une section");
    		Terminal.ecrireStringln("\t" + "\t" + "\t" + "4: Creer une ligne");
    		Terminal.ecrireStringln("\t" + "\t" + "\t" + "5: Effacer une ligne");
    		Terminal.ecrireStringln("\t" + "\t" + "\t" + "6: Voir Devis / Facture");
    		Terminal.ecrireStringln("\t" + "\t" + "\t" + "7: Sortir");
    		Terminal.sautDeLigne();
     
    		// Enregistre et vérifie le choix utilisateur dans le menu principal
     
    		boolean testReponse = false;
     
    		while (testReponse == false) {
    			Terminal.sautDeLigne();
    			Terminal.ecrireString("\t" + "Veuillez entrer votre choix : ");
    			Terminal.sautDeLigne();
    			varChoixMenu = Terminal.lireInt();
     
    			if (varChoixMenu < 1 || varChoixMenu > 7) {
    				testReponse = false;
    				Terminal.ecrireString("\t"
    						+ "Le choix rentré n'est pas valide, vous devez rentrer un nombre entre 1 et 7");
    				Terminal.sautDeLigne();
    			} else {
    				testReponse = true;
    			}
    		}
    		return varChoixMenu;
    	}

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il se passe tout simplement que tu appelles 2 fois de suite la méthode afficheMenu () :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
    
    afficherMenu(); 
    
    // Déclenche les méthodes suivant le choix effectué dans le menu
    // principal
     
    int varChoixMenu=afficherMenu();
    
    ...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 126
    Par défaut
    Merci pour ta réponse, mais je ne vois toujours pas comment solutionner ça...

    Il devrait être simple de récupérer uniquement la valeur de varChoixMenu dand le main grâce à la fonction afficherMenu() ou bien ce n'est pas possible de le traiter ensuite dans le main ?

    Bref, je patine ...

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par clickandgo Voir le message
    Merci pour ta réponse, mais je ne vois toujours pas comment solutionner ça...
    Euh, bah au moins, tu supprimes le premier appel

    Citation Envoyé par clickandgo Voir le message
    Il devrait être simple de récupérer uniquement la valeur de varChoixMenu dand le main grâce à la fonction afficherMenu() ou bien ce n'est pas possible de le traiter ensuite dans le main ?
    Mais, c'est simple ! Et c'est ce que tu fais, mais avant de le faire, tu appelles la méthode une première fois, tu ne récupères pas la valeur de choix qu'elle retourne et tu n'en fais rien.

    Donc le menu s'affiche, l'utilisateur saisit son choix. Et juste après tu rappelles la méthode : donc le menu s'affiche une seconde fois, et là tu récupères la valeur de choix que la méthode retourne et que tu la traites, pour appeler la méthode adéquate.

    Donc c'est normal que le menu s'affiche 2 fois, et qu'il faille saisir 2 fois le choix de menu 2 fois, puisque que la méthode qui fait ça est appelée 2 fois.


    En réalité, la solution serait de faire une boucle (comme je te l'ai indiqué dans l'autre discussion sur le même sujet, c'est-à-dire qu'on affiche le menu tant que l'utilisateur ne demande pas de sortir, et entre chaque choix autre que sortir, on traite le choix) :

    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
    ...
     
    int varChoixMenu;
     
    boolean run=true;
    while (run) {
       int varChoixMenu=afficherMenu();
     
     
    // Déclenche les méthodes suivant le choix effectué dans le menu
    // principal
       switch(varChoixMenu) {
       case 1:
    	creerSection(tabSections);
            break;,
       case 2:
            afficherSections(tabSections);
           break;
       case 7:
            // fin  programme
            run=false;
           break;
    }
     
    }
     
    // fin programme
    ...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 126
    Par défaut
    Merci mais il faut utiliser que les méthodes qu'on a dans le cour, les "case" ne sont pas autorisés ...

    C'est pour ça que j'essayais de le faire comme ça...

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Bah, tu peux changer le switch par des "if else if" si tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ( varChoixMenu==1 ) {
    	creerSection(tabSections);
    } else if ( varChoixMenu==2) {
            afficherSections(tabSections);
    } else if ( varChoixMenu==7) {
            // fin  programme
            run=false;
    }
    Ça ne change rien à ton problème initial,, qui était t'appeler 2 fois de suite la méthode afficheMenu(), ni a sa solution (l'appeler qu'une fois).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/07/2002, 13h32
  2. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 08h22
  3. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08
  4. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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