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 :

probleme debutant calc_dos


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut probleme debutant calc_dos
    Salut tout le monde,
    voila je suis tout nouveau ici et dans le monde de la programmation.
    Je me suis lancer dans un petit programme qui est une calculatrice en mode DOS .

    Donc voici le code que j'ai commencer et j'ai un petit soucis :

    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
    67
    68
    69
    70
    71
    72
    73
    74
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package calcv1;
     
    import java.util.Scanner;
     
    /**
     *
     * @author GoreX
     */
    public class Main {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            //Notre objet Scanner
    Scanner sc = new Scanner(System.in);
     
    //Initialisation des variable
    int rep_menu;
    int rep_menu_5 = 0;
    int n='0';
    int m='1';
     
    //Boucle Principal si le chiffre entrée excede 6
    //Affichage de l'entête
    System.out.println(" ------------------------------------------------------------------------");
    System.out.println("|             CALCULATRICE V1 BY J.KAYED                                 |");
    System.out.println(" ------------------------------------------------------------------------");
     
    do
    {
    //Affichage des menus
    System.out.println("0. Faire une Addition");
    System.out.println("1. Faire une Soustraction");
    System.out.println("2. Faire une Division");
    System.out.println("3. Faire une Multiplication");
    System.out.println("4. Quitter");
    System.out.println("5. Plus d'infos sur le createur\n");
     
    //Infos d'aide
    System.out.println("HELP : Tapez 0, 1, 2, 3, 4, 5, selon votre choix.");
     
    //On retien la touche que le client va rentrer
    rep_menu = sc.nextInt();
    if(rep_menu>5)
        System.out.println("Traitement Impossible");
     
    }while(rep_menu>5 || rep_menu_5==1 );
     
    do{
     
        System.out.println("Auteur = Mr Julien Kayed");
    System.out.println("Version = 1.0");
    System.out.println("Ce logiciel est destinée à des tests.");
            System.out.println("En aucun cas ce logiciel doit etre copier .\n");
            System.out.println("Pour revenir au menu, tapez 1");
     
     
            rep_menu = sc.nextInt();
     
            }while(rep_menu!=1 && rep_menu_5==5);
     
     
     
     
     
    }
        }


    Le soucis c'est que lorsque je rentre dans mon programme , je tape 5 pour plus d'infos tout fonctionne bien ..... mais lorsque je tape 1 pour revenir au menu ca quitte le programme pourtant j'i bien mis ma condition et ma boucle qui dit que lorsque je tape 1 dans ma variable rep_menu_5 retour au menu .
    Si quelqu'un peut m'aider sa serait cool.
    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    Je te conseillerais d'utilise des switch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    switch(sc.nextInt()) {
        case 1:
            do1();
            break;
        case 2:
            do2();
            break;
     
        // ainsi de suite ...
    }
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Ok , mais il me faudrait un peut plus d'indication stp .
    petit exemple des switch dans ce cas précis ......
    Merci

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par gorex1 Voir le message
    Le soucis c'est que lorsque je rentre dans mon programme , je tape 5 pour plus d'infos tout fonctionne bien ..... mais lorsque je tape 1 pour revenir au menu ca quitte le programme pourtant j'i bien mis ma condition et ma boucle qui dit que lorsque je tape 1 dans ma variable rep_menu_5 retour au menu .
    "Quand tu tapes 1 pour revenir au menu", tu sors de la deuxième boucle do/while, et tu arrives à la fin de ta méthode main, donc le programme se termine.
    Rien de plus normal.

    Je recopie ton code, un peu épuré pour y voir plus clair :
    - j'ai remplacé les affichages par des commentaires
    - rep_menu_5 prend la valeur 0 au début et n'est jamais modifié par la suite, donc j'ai simplifié les conditions de sortie des boucles
    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
    public static void main(String[] args) {
     
       Scanner sc = new Scanner(System.in);
       int rep_menu;
     
       // affichage de l'entête
     
       do
       {
          // affichage des menus
          rep_menu = sc.nextInt();
          if(rep_menu>5)
             System.out.println("Traitement Impossible");
       }
       while (rep_menu>5);
     
       do{
          // affichage des infos sur l'auteur
          rep_menu = sc.nextInt();
       }
       while (rep_menu!=1);
     
    }
    On voit clairement que le déroulement du programme est complètement linéaire :
    - début
    - affichage de l'entête
    - affichage du menu principal, et on recommence tant que l'utilisateur entre un chiffre supérieur à 5
    - affichage des infos sur l'auteur (même si l'utilisateur avait entré un choix différent de 5), et on recommence tant que l'utilisateur entre un chiffre différent de 1
    - fin
    A aucun moment il n'est prévu de revenir en arrière...

    Tu devrais revoir la structure de ton programme.
    Déjà, décompose-le en fonctions simples qui rendront ton code plus lisible : par exemple, l'affichage de tes infos sur l'auteur peut faire l'objet d'une fonction void printAuthorInformations(), à utiliser ensuite dans la boucle principale.
    Ensuite, si tu veux pouvoir revenir au menu principal, et donc "boucler à l'infini", il ne faut pas que tes boucles se succèdent (sinon on va effectuer la première, puis la deuxième, puis sortir du programme) mais qu'elles s'imbriquent les unes dans les autres (la deuxième boucle est à l'intérieur de la première, donc quand on en sort on revient dans la première boucle, c'est-à-dire qu'on revient effectivement au menu). Et c'est là qu'on comprend mieux l'intérêt de ma première suggestion, parce que les boucles imbriquées c'est illisible à plaisir...

  5. #5
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    L'implémentation la plus basique que je puisse trouver serait la suivante (code non testé).

    Attention il faudra implémenter les méthodes addition, soustraction, division, multiplication, error, et info.

    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
    Scanner sc = new Scanner(System.in);
     
    menuLoop: while(true) {
        System.out.println("0. Faire une Addition");
        System.out.println("1. Faire une Soustraction");
        System.out.println("2. Faire une Division");
        System.out.println("3. Faire une Multiplication");
        System.out.println("4. Quitter");
        System.out.println("5. Plus d'infos sur le createur\n");
     
        switch(sc.nextInt()) {
            case 0:
                addition();
                break;
            case 1:
                soustraction();
                break;
            case 2 :
                division();
                break;
            case 3 :
                multiplication();
                break;
            case 4 :
                break menuLoop;
            case 5 :
                info();
                break;
            default :
                error();
                break;
        }
    }
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

Discussions similaires

  1. Probleme/debutant : Bouton
    Par romyschneider dans le forum Flash
    Réponses: 2
    Dernier message: 13/08/2008, 10h12
  2. JAIN sip -- probleme debutant
    Par vincent_roye dans le forum Multimédia
    Réponses: 1
    Dernier message: 04/07/2008, 15h56
  3. StringTokenizer() probleme debutant
    Par id.prog dans le forum Langage
    Réponses: 3
    Dernier message: 25/03/2008, 09h26
  4. [MVC] probleme debutant Spring
    Par dominou73 dans le forum Spring Web
    Réponses: 1
    Dernier message: 24/08/2007, 08h11
  5. [PHP] ShutBox//Probleme [debutant]
    Par Jazys dans le forum Langage
    Réponses: 2
    Dernier message: 19/06/2006, 23h01

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