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:

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
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.