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

Java Discussion :

calculatrice en java


Sujet :

Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 18
    Points
    18
    Par défaut calculatrice en java
    Bonjour,

    Je suis en train de faire une calculatrice en java. Mon problème est que mon calculatrice fonctionne que avec un seul chiffre par exemple quand je fais 2+2 ca marche. Mais quand j'arrive pas a afficher plus d'un chiffres sur le JtextField. MErci de m aider. je vous joins mon code.

    PS : G MIS EN COMMENTAIRE LA COMMANDE QUE J ARRIVE PAS FAIRE MARCHER.

    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
     
     
    public void actionPerformed(ActionEvent e) {
     
            if (e.getSource() == bouton0||e.getSource() ==                                                                   outon1||e.getSource() == bouton2||e.getSource() == bouton3
            ||e.getSource() == bouton4||e.getSource() == bouton5||e.getSource() == bouton6||e.getSource() == bouton7
            ||e.getSource() == bouton8||e.getSource() == bouton9){
     
            champAffichage.setText(((JButton) e.getSource()).getLabel());
        }
     
     
        //    champAffichage.setText(champAffichage.getText()+ ((JButton) e.getSource()).getLabel());
     
     
     
        else if (e.getSource()==boutonOp){
     
     
            res1=Double.parseDouble(champAffichage.getText());
            champAffichage.setText(""+res1);
            add=true;minus=false;
     
            }
     
     
        else if (e.getSource()==boutonSous){
     
     
            res1=Double.parseDouble(champAffichage.getText());
            champAffichage.setText(""+res1);
            minus=true;add=false;
        }
     
     
     
        else if (e.getSource()==boutonEgale){
             resultat();
        }      
     
    }  
    void resultat() {
     
        double res2 =Double.parseDouble(champAffichage.getText());
     
        if (add){champAffichage.setText(""+(res1+res2));  }
     
        else if (minus){champAffichage.setText(""+(res1-res2)); }

  2. #2
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    édite ton message et met la balise stp
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 18
    Points
    18
    Par défaut
    c fait. Désolé j'avais pas pensé

  4. #4
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    Mais quand j'arrive pas a afficher plus d'un chiffres sur le JtextField.
    j'ai pas très bien compris ta question là .... en fait ça marche quand tu affiche un seul chiffre et quand ça dépassé un chiffre y'a plus rien ?
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 18
    Points
    18
    Par défaut
    Ca marche bien pour une seul chiffres.

    Mais j'arrive pas à faire afficher plus d'un chiffres par exemple 22 ou 12.

    Pour l'instant ma calculatrice permet de faire des opérations qu'avec des chiffres singuliers.
    Il faudrait que mon JTextField affiche plusieurs chiffres.

  6. #6
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    je pense que c'est normal , à chaque appui sur un bouton tu fais

    champAffichage.setText(((JButton) e.getSource()).getLabel());
    donc le champ est ré-écrit à chq appui,
    tu devrais ajouter le chiffre plutot que l ecraser.
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 18
    Points
    18
    Par défaut
    Comment pourrais je faire ca ?

    Regarde la commande que j'ai mis en commentaire, dis moi comment je pourais faire ca avec.

  8. #8
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, quelle est l'erreur quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champAffichage.setText(champAffichage.getText()+ ((JButton) e.getSource()).getLabel());

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 18
    Points
    18
    Par défaut
    Bonjour, quelle est l'erreur quand tu fais
    Code :

    champAffichage.setText(champAffichage.getText()+ ((JButton) e.getSource()).getLabel());


    reponse :

    L'erreur est qu'il affiche bien plus d'un chiffre mais aprés quand j'appuis sur le bouton + ou - et un autre bouton chiffre ( ex: 6 ou 9 ) il me met la deuxieme chiffre à la suite du premier. Et du coup mon operation devient faux

  10. #10
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 247
    Points : 293
    Points
    293
    Par défaut
    Tu mets ce que tu as mis en commentaire à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    champAffichage.setText(((JButton) e.getSource()).getLabel());
    Et ça devrait marcher.

  11. #11
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    C'est là que je voulais en venir, enlève la ligne en commentaire déja.
    Ensuite c'est plus un problème d'algo qu'autre chose.

    Quand la source de l'événement est un signe + ou -, il faut que tu récupère la valeur courante pour la stocker, ensuite tu peux effacer ton champAffichage. Quand tu appuies sur = tu fais ton opération et c'est bon.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 18
    Points
    18
    Par défaut
    Merci pour l'aide. Je l'ai essayé mais ca ne marche toujours pas.

    Il m'indique des erreurs d 'éxecution.

  13. #13
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    On ne pourra pas t'aider si tu n'indiques pas quelles sont les erreurs, et que tu ne donnes pas ton code.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 18
    Points
    18
    Par défaut
    Désolé, voici le code entière. ça se trouve j'ai mal choisi l'emplacement ou je vide le contenu du JTextField je vous met le code complet.

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
     
     
    import javax.swing.*;
    import java.awt.GridLayout;
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    public class Calculatrice extends JPanel implements ActionListener {
    // Déclaration de tous les composants de la calculatrice.
     
    JPanel contenuFenêtre;
    JTextField champAffichage;
    JButton bouton0;
    JButton bouton1;
    JButton bouton2;
    JButton bouton3;
    JButton bouton4;
    JButton bouton5;
    JButton bouton6;
    JButton bouton7;
    JButton bouton8;
    JButton bouton9;
    JButton boutonVirgule;
    JButton boutonEgale;
    JButton boutonOp;
    JButton boutonMul;
    JButton boutonDiv;
    JButton boutonSous;
    JButton boutonMinus;
    JButton boutonPi;
    JPanel panneauChiffres;
     
    JPanel mode;
    JRadioButton hex;
    JRadioButton dec;
    JRadioButton oct;
    JRadioButton bin;
    JButton mR;
    JButton mC;
    JButton mS;
    JButton mPlus;
     
    JButton cE;
    JButton c;
    JButton ln;
    JButton del;
     
    double res1=0, res3=0;
    boolean add=false, minus=false, op= false ;
     
    // Le constructeur crée les composants en mémoire
    // et les ajoute au cadre en utilisant une combinaison
    // de Borderlayout et Gridlayout
     
    Calculatrice() {
    contenuFenêtre = new JPanel();
    // Affecte un gestionnaire de présentation à ce panneau
     
    BorderLayout dispositionl = new BorderLayout();
    contenuFenêtre.setLayout(dispositionl);
     
    // Crée le champ d'affichage et le positionne dans
    // la zone nord de la fenêtre
     
     
    champAffichage = new JTextField(30);
    contenuFenêtre.add("North", champAffichage);
    // Crée les boutons en utilisant le constructeur de
    // la classe JButton qui prend en paramètre le libellé
    // du bouton
    bouton0 = new JButton("0");
    bouton1 = new JButton("1");
    bouton2 = new JButton("2");
    bouton3 = new JButton("3");
    bouton4 = new JButton("4");
    bouton5 = new JButton("5");
    bouton6 = new JButton("6");
    bouton7 = new JButton("7");
    bouton8 = new JButton("8");
    bouton9 = new JButton("9");
    boutonVirgule = new JButton(",");
    boutonEgale = new JButton("=");
    boutonOp = new JButton ("+");
    boutonMul=new JButton("x");
    boutonDiv=new JButton("/");
    boutonSous = new JButton("-");
    boutonMinus = new JButton("+/-");
    boutonPi= new JButton("PI");
     
     
    hex =new JRadioButton("HEX");
    dec =new JRadioButton("DEC");
    oct =new JRadioButton("OCT");
    bin=new JRadioButton("BIN");
    mR =new JButton("MR");
    mC=new JButton("MC");
    mS=new JButton("MS");
    mPlus=new JButton("M+");
     
    cE = new JButton ("CE");
    c = new JButton ("C");
    del = new JButton ("Del");
    ln = new JButton ("ln");
    // Crée le panneau avec le quadrillage qui contient
    // les 12 boutons – les 10 boutons numériques et ceux
    // représentant la virgule et le signe égale
    panneauChiffres = new JPanel();
    GridLayout disposition2 = new GridLayout(6, 4);
    panneauChiffres.setLayout(disposition2);
    // Ajoute les contrôles au panneau panneauChiffres
    panneauChiffres.add(boutonOp);
    panneauChiffres.add(boutonMul);
    panneauChiffres.add(boutonDiv);
    panneauChiffres.add(boutonSous);
    panneauChiffres.add(boutonMinus);
    panneauChiffres.add(boutonPi);
     
    panneauChiffres.add(bouton1);
    panneauChiffres.add(bouton2);
    panneauChiffres.add(bouton3);
    panneauChiffres.add(bouton4);
    panneauChiffres.add(bouton5);
    panneauChiffres.add(bouton6);
    panneauChiffres.add(bouton7);
    panneauChiffres.add(bouton8);
    panneauChiffres.add(bouton9);
    panneauChiffres.add(bouton0);
    panneauChiffres.add(boutonVirgule);
    panneauChiffres.add(boutonEgale);
     
    mode = new JPanel();
    GridLayout disposition3 = new GridLayout(3,4);
    mode.setLayout(disposition3);
     
     
    mode.add(hex);
    mode.add(dec);
    mode.add(oct);
    mode.add(bin);
    mode.add(mR);
    mode.add(mC);
    mode.add(mPlus);
    mode.add(mS);
     
    mode.add(cE);
    mode.add(c);
    mode.add(del);
    mode.add(ln);
     
     
     
     
    //=========================================================================================
    bouton0.addActionListener(this);
    bouton1.addActionListener(this);
    bouton2.addActionListener(this);
    bouton3.addActionListener(this);
    bouton4.addActionListener(this);
    bouton5.addActionListener(this);
    bouton6.addActionListener(this);
    bouton7.addActionListener(this);
    bouton8.addActionListener(this);
    bouton9.addActionListener(this);
    boutonVirgule.addActionListener(this);
    boutonEgale.addActionListener(this);
    boutonOp.addActionListener(this);
    boutonMul.addActionListener(this);
    boutonDiv.addActionListener(this);
    boutonSous.addActionListener(this);
    boutonMinus.addActionListener(this);
    boutonPi.addActionListener(this);
     
     
    boutonOp.addActionListener(this);
    boutonMul.addActionListener(this);
    boutonDiv.addActionListener(this);
    boutonSous.addActionListener(this);
    boutonMinus.addActionListener(this);
    boutonPi.addActionListener(this);
     
     
     
     
     
    // Ajoute panneauChiffres à la zone centrale de la fenêtre
    contenuFenêtre.add("Center", panneauChiffres);
     
    contenuFenêtre.add("West",mode);
     
    // Crée le cadre et lui affecte son contenu
    JFrame frame = new JFrame("Calculatrice by ANEVAR");
    frame.setContentPane(contenuFenêtre);
    // Affecte à la fenêtre des dimensions suffisantes pour
    // prendre en compte tous les contrôles
    frame.pack();
    // Enfin, affiche la fenêtre
    frame.setVisible(true);
    }
     
     
     
    public void actionPerformed(ActionEvent e) {
     
        if (e.getSource() == bouton0||e.getSource() == bouton1||e.getSource() == bouton2||e.getSource() == bouton3
            ||e.getSource() == bouton4||e.getSource() == bouton5||e.getSource() == bouton6||e.getSource() == bouton7
            ||e.getSource() == bouton8||e.getSource() == bouton9){
     
            champAffichage.setText(champAffichage.getText()+ ((JButton) e.getSource()).getLabel());
           // champAffichage.setText(((JButton) e.getSource()).getLabel());
        }
     
     
     
     
     
     
        else if (e.getSource()==boutonOp){
     
     
            res1=Double.parseDouble(champAffichage.getText());
            champAffichage.setText(""+res1);
            add=true;minus=false;
     
     
            }
     
     
        else if (e.getSource()==boutonSous){
     
     
            res1=Double.parseDouble(champAffichage.getText());
            champAffichage.setText(""+res1);
            minus=true;add=false;
        }
     
     
     
        else if (e.getSource()==boutonEgale){
            champAffichage.setText("");
            resultat();
        }      
     
    }  
    void resultat() {
     
        double res2 =Double.parseDouble(champAffichage.getText());
     
        if (add){
     
            champAffichage.setText(""+(res1+res2));  }
     
        else if (minus){champAffichage.setText(""+(res1-res2)); }
     
     
     
    }
     
    public static void main(String[] args) {
    Calculatrice calc = new Calculatrice();
    }
    }

  15. #15
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Quelles sont les erreurs?

    Ce code n'a aucun effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    res1=Double.parseDouble(champAffichage.getText());
    champAffichage.setText(""+res1);
    Tu récupères la valeur du champ texte que tu convertis en double, que tu reconvertis en String pour l'affecter au champ texte.

    Il faudrait ajouter un booleen "effacer" que tu mets à true lorsque tu saisies un signe d'opération. Ensuite tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (e.getSource() == bouton0||e.getSource() == bouton1||e.getSource() == bouton2||e.getSource() == bouton3
            ||e.getSource() == bouton4||e.getSource() == bouton5||e.getSource() == bouton6||e.getSource() == bouton7
            ||e.getSource() == bouton8||e.getSource() == bouton9){
     
            if(effacer) {
                champAffichage.setText("");
            }
            champAffichage.setText(champAffichage.getText()+ ((JButton) e.getSource()).getLabel());
           // champAffichage.setText(((JButton) e.getSource()).getLabel());
        }

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 18
    Points
    18
    Par défaut
    morph41 ==> Merci infiniment ca marcheeeeeeeeeeeeeeeeeeeeeeeeeeee


    Merci

  17. #17
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    De rien, je pense qu'il reste une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(effacer) {
        champAffichage.setText("");
        effacer = false; // j'avais oublié cette ligne
    }
    Pense au bouton

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 18
    Points
    18
    Par défaut
    lol desolé enconre. Mais ca ne marche que le premiere fois. La fois suivante il me fait la meme chose que le premiere fois.

  19. #19
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Regarde mon post du dessus

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Points : 18
    Points
    18
    Par défaut
    Merci ca y est j'avais fai la meme chose.

    Merci encore pour ton aide. Maintenant je pourrais continuer le code.

Discussions similaires

  1. programme calculatrice en java besoin d'aide
    Par minouch dans le forum Débuter
    Réponses: 4
    Dernier message: 04/12/2010, 09h24
  2. calculatrice avec JAVA
    Par Paradisma dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 17/10/2010, 03h46
  3. Création d'une calculatrice en Java
    Par angelka dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 05/12/2007, 19h19

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