Cherche le code de calculatrice en java

Fermé
mimo2222 Messages postés 19 Date d'inscription samedi 30 novembre 2013 Statut Membre Dernière intervention 9 mars 2014 - 13 févr. 2014 à 00:11
walidovich_85 Messages postés 608 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 25 octobre 2015 - 14 févr. 2014 à 00:15
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

A voir également:

2 réponses

walidovich_85 Messages postés 608 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 25 octobre 2015 73
13 févr. 2014 à 19:39
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
mimo2222 Messages postés 19 Date d'inscription samedi 30 novembre 2013 Statut Membre Dernière intervention 9 mars 2014 2
13 févr. 2014 à 22:02
il ya une erreur dans le code je ne sais pas ou exactement!!!!
0
walidovich_85 Messages postés 608 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 25 octobre 2015 73
14 févr. 2014 à 00:13
est ce que tu peux nous aider avec le message d'erreur?
0
walidovich_85 Messages postés 608 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 25 octobre 2015 73
Modifié par walidovich_85 le 14/02/2014 à 00:17
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