Voila toujours dans mon programme de calculatrice (elle possède 4 modes qui sont basique, scientifique, binaire et hexadécimal). Je souhaiterai faire lorsque je suis en mode binaire par exemple une opération genre le "ET" entre deux chiffre binaire. Par exemple 110011 ET 00110. J'ai essayer d'implémenter le tout mais j'ai des problèmes je n'obtient pas les résultats par exemple je fais 101010 ET 101100 et j'obtiens: 1.0212111E10.
voici le code:
code lorsque l'on clique sur les boutons des opérande comme ET (boutmult) et OU (boutadd):
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 this.add(boutadd = new JButton()); boutadd.setText("+"); boutadd.setPreferredSize(new Dimension(75,75)); boutadd.setMnemonic(KeyEvent.VK_ADD); boutadd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(e.getSource() == boutadd){ if(clicOperateur){ calcul(); lab.setText(String.valueOf(chiffre1)); } else{ chiffre1 = Double.valueOf(lab.getText()).doubleValue(); clicOperateur = true; lab.setText(""); } operateur = "+"; } if ((e.getSource()==boutadd) && (mode.equals("binaire"))) { chiffre3 = String.valueOf(lab.getText()); res1=Integer.parseInt(chiffre3, 2); clicOperateur = true; lab.setText("0"); operateur = "+"; } } }); this.add(boutmult = new JButton()); boutmult.setText("*"); boutmult.setPreferredSize(new Dimension(75,75)); boutmult.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(e.getSource() == boutmult){ if(clicOperateur){ calcul(); lab.setText(String.valueOf(chiffre1)); } else{ chiffre1 = Double.valueOf(lab.getText()).doubleValue(); clicOperateur = true; lab.setText("0"); } operateur = "*"; } if ((e.getSource()==boutmult) && (mode.equals("binaire"))) { chiffre3 = String.valueOf(lab.getText()); res1=Integer.parseInt(chiffre3, 2); clicOperateur = true; lab.setText("0"); operateur = "*"; } } });
Code de la fonction qui fait les calculs:
Est ce que quelqu'un aurai une idée ? Désolé si le sujet n'est pas au bon endroit car vu que je fait une calculatrice en mode graphique je savais pas trop ou le mettre.
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 //fonction qui permet de faire les caculs avec les operateurs de base private void calcul(){ if(operateur.equals("+")){ chiffre1 = chiffre1 + Double.valueOf(lab.getText()).doubleValue();; resultat=chiffre1; lab.setText(String.valueOf(chiffre1)); } if(operateur.equals("-")){ chiffre1 = chiffre1 - Double.valueOf(lab.getText()).doubleValue(); resultat=chiffre1; lab.setText(String.valueOf(chiffre1)); } if(operateur.equals("*")){ chiffre1 = chiffre1 * Double.valueOf(lab.getText()).doubleValue(); resultat=chiffre1; lab.setText(String.valueOf(chiffre1)); } if(operateur.equals("/")){ try{ chiffre1 = chiffre1 / Double.valueOf(lab.getText()).doubleValue(); BigDecimal bd = new BigDecimal(chiffre1); bd= bd.setScale(15,BigDecimal.ROUND_DOWN); chiffre1 = bd.doubleValue(); resultat=chiffre1; lab.setText(String.valueOf(chiffre1)); } catch(ArithmeticException e) { lab.setText("0"); } } //Ici on effectue les calcul lorsque l'on es dans le mode binaire if(operateur.equals("+") && mode.equals("binaire")){ //ici Le OU inclusif chiffre2 = res1 | Integer.parseInt(String.valueOf(lab.getText()), 2); res=Integer.toBinaryString(chiffre2); resultat=Double.valueOf(res);; lab.setText(String.valueOf(res)); } if(operateur.equals("*") && mode.equals("binaire")){ //ici le ET chiffre2 = res1 & Integer.parseInt(String.valueOf(lab.getText()), 2); res=Integer.toBinaryString(chiffre2); resultat=Double.valueOf(res);; lab.setText(String.valueOf(res)); } }//fin fonction calcul
Partager