Cherche le code de calculatrice en java

mimo2222 Messages postés 20 Statut Membre -  
walidovich_85 Messages postés 698 Statut Membre -
Bonjour,

est ce que quelqu un pourrait m'aider pour trouver un code en java de calculatrice qui calcul aussi le cos sin et tang je suis debutante jai reussi a faire linterface mais impossible pour moi d'ecrire le code pour les calcul je narrive pas a le faire :s

2 réponses

  1. walidovich_85 Messages postés 698 Statut Membre 73
     
    Bonsoir,

    Cette solution est issue du siteduzero, qui est un TP.

    La classe Main:

    public class Main {
    /**
    * @param args
    */
    public static void main(String[] args) {
    Calculatrice calculette = new Calculatrice();
    }
    } 


    La classe Calculatrice:

    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    public class Calculatrice extends JFrame {
    private JPanel container = new JPanel();
    String[] tab_string = {"1", "2", "3", "4", "5", "6", "7",
    "8", "9", "0", ".", "=", "C", "+", "-", "*", "/"};
    JButton[] tab_button = new JButton[tab_string.length];
    private JLabel ecran = new JLabel();
    private Dimension dim = new Dimension(50, 40);
    private Dimension dim2 = new Dimension(50, 31);
    private double chiffre1;
    private boolean clicOperateur = false, update = false;
    private String operateur = "";
    public Calculatrice(){
    this.setSize(240, 260);
    this.setTitle("Calculette");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocationRelativeTo(null);
    this.setResizable(false);
    initComposant();
    this.setContentPane(container);
    this.setVisible(true);
    }
    private void initComposant(){
    Font police = new Font("Arial", Font.BOLD, 20);
    ecran = new JLabel("0");
    ecran.setFont(police);
    ecran.setHorizontalAlignment(JLabel.RIGHT);
    ecran.setPreferredSize(new Dimension(220, 20));
    JPanel operateur = new JPanel();
    operateur.setPreferredSize(new Dimension(55,
    225));
    JPanel chiffre = new JPanel();
    chiffre.setPreferredSize(new Dimension(165, 225));
    JPanel panEcran = new JPanel();
    panEcran.setPreferredSize(new Dimension(220, 30));
    for(int i = 0; i < tab_string.length; i++)
    {
    tab_button[i] = new JButton(tab_string[i]);
    tab_button[i].setPreferredSize(dim);
    switch(i){
    case 11 :
    tab_button[i].addActionListener(new
    EgalListener());
    chiffre.add(tab_button[i]);
    break;
    case 12 :
    tab_button[i].setForeground(Color.red);
    tab_button[i].addActionListener(new
    ResetListener());
    tab_button[i].setPreferredSize(dim2);
    operateur.add(tab_button[i]);
    break;
    case 13 :
    tab_button[i].addActionListener(new
    PlusListener());
    tab_button[i].setPreferredSize(dim2);
    operateur.add(tab_button[i]);
    break;
    case 14 :
    tab_button[i].addActionListener(new
    MoinsListener());
    tab_button[i].setPreferredSize(dim2);
    operateur.add(tab_button[i]);
    break;
    case 15 :
    tab_button[i].addActionListener(new
    MultiListener());
    tab_button[i].setPreferredSize(dim2);
    operateur.add(tab_button[i]);
    break;
    case 16 :
    tab_button[i].addActionListener(new
    DivListener());
    tab_button[i].setPreferredSize(dim2);
    operateur.add(tab_button[i]);
    break;
    default :
    chiffre.add(tab_button[i]);
    tab_button[i].addActionListener(new
    ChiffreListener());
    break;
    }
    }
    panEcran.add(ecran);
    panEcran.setBorder(BorderFactory.createLineBorder(Color.black));
    container.add(panEcran, BorderLayout.NORTH);
    container.add(chiffre, BorderLayout.CENTER);
    container.add(operateur, BorderLayout.EAST);
    }
    private void calcul(){
    if(operateur.equals("+"))
    {
    chiffre1 = chiffre1 +
    Double.valueOf(ecran.getText()).doubleValue();
    ecran.setText(String.valueOf(chiffre1));
    }
    if(operateur.equals("-"))
    {
    chiffre1 = chiffre1 -
    Double.valueOf(ecran.getText()).doubleValue();
    ecran.setText(String.valueOf(chiffre1));
    }
    if(operateur.equals("*"))
    {
    chiffre1 = chiffre1 *
    Double.valueOf(ecran.getText()).doubleValue();
    ecran.setText(String.valueOf(chiffre1));
    }
    if(operateur.equals("/"))
    {
    try{
    chiffre1 = chiffre1 /
    Double.valueOf(ecran.getText()).doubleValue();
    ecran.setText(String.valueOf(chiffre1));
    }catch(ArithmeticException e){
    ecran.setText("0");
    }
    }
    }
    class ChiffreListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
    //On affiche le chiffre en plus dans le
    label
    String str =
    ((JButton)e.getSource()).getText();
    if(update)
    {
    update = false;
    }
    else
    {
    if(!ecran.getText().equals("0"))
    str = ecran.getText() +
    str;
    }
    ecran.setText(str);
    }
    }
    class EgalListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent arg0) {
    calcul();
    update = true;
    clicOperateur = false;
    }
    }
    class PlusListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent arg0) {
    if(clicOperateur)
    {
    calcul();
    ecran.setText(String.valueOf(chiffre1));
    }
    else
    {
    chiffre1 =
    Double.valueOf(ecran.getText()).doubleValue();
    clicOperateur = true;
    }
    operateur = "+";
    update = true;
    }
    }
    class MoinsListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent arg0) {
    if(clicOperateur)
    {
    calcul();
    ecran.setText(String.valueOf(chiffre1));
    }
    else
    {
    chiffre1 =
    Double.valueOf(ecran.getText()).doubleValue();
    clicOperateur = true;
    }
    operateur = "-";
    update = true;
    }
    }
    class MultiListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent arg0) {
    if(clicOperateur)
    {
    calcul();
    ecran.setText(String.valueOf(chiffre1));
    }
    else
    {
    chiffre1 =
    Double.valueOf(ecran.getText()).doubleValue();
    clicOperateur = true;
    }
    operateur = "*";
    update = true;
    }
    }
    class DivListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent arg0) {
    if(clicOperateur)
    {
    calcul();
    ecran.setText(String.valueOf(chiffre1));
    }
    else
    {
    chiffre1 =
    Double.valueOf(ecran.getText()).doubleValue();
    clicOperateur = true;
    }
    operateur = "/";
    update = true;
    }
    }
    class ResetListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent arg0) {
    clicOperateur = false;
    update = true;
    chiffre1 = 0;
    operateur = "";
    ecran.setText("");
    }
    }
    }


    On peut encore ajouter les boutons pour sinus et cosinus, mais je te laisse le temps de comprendre le code et de faire le premier essaie.

    Bonne chance
    1
  2. mimo2222 Messages postés 20 Statut Membre 2
     
    il ya une erreur dans le code je ne sais pas ou exactement!!!!
    0
    1. walidovich_85 Messages postés 698 Statut Membre 73
       
      est ce que tu peux nous aider avec le message d'erreur?
      0
    2. walidovich_85 Messages postés 698 Statut Membre 73
       
      j'ai pu voir un (lignes 134 et 135):
      //On affiche le chiffre en plus dans le
      label


      qui doit etre juste corrigé:
      //On affiche le chiffre en plus dans le label
      


      et peut etre qu'il y'en a d'autre...
      0