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

Interfaces Graphiques en Java Discussion :

Opération binaire en mode binaire et hexadécimal


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut Opération binaire en mode binaire et hexadécimal
    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.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 085
    Points : 8 004
    Points
    8 004
    Par défaut
    J'ai un peu dut mal a comprendre pourquoi tu nous donne TOUT le code et non pas la partie spécifique.

    Si je ne code qu'une petite fonction qui fait la meme chose :

    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
    String hexString1 = "111111";
    		String hexString2 = "110101";
     
    		// On convertit eventuellement les chaine (pour obtenir le type qui va nous permettre de reelement calculer).
    		int val1 = Integer.parseInt(hexString1, 2);
    		int val2 = Integer.parseInt(hexString2, 2);
     
    		// On fait l'operation
    		int val3 = val1 & val2;
     
    		// on recuperer eventuellement un string.
    		String val3binaire = Integer.toBinaryString(val3);
     
    		System.err.println(val1+ " & "+val2 + " = "+val3);
    		System.err.println(val3binaire);
    Chez moi ca marche très bien. Debug ton code ligne par ligne a l'endroit ou tu fais ton operation ou tes conversions, l'erreur vient de la.

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    res=Integer.toBinaryString(chiffre2);
     
    resultat=Double.valueOf(res);
     
    lab.setText(String.valueOf(res));
    Quel sens ça à de convertir en double ici ?

Discussions similaires

  1. ouvrire un file mode binaire pour lire magique number
    Par Alghero dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 27/10/2006, 10h53
  2. ouverture/lecture/ecriture dans un fichier en mode binaire
    Par dirty_boy dans le forum Débuter
    Réponses: 2
    Dernier message: 15/03/2006, 09h38
  3. Réponses: 4
    Dernier message: 04/11/2005, 10h04
  4. Accéder au contenu d'un fichier via une URL en mode binaire
    Par sbelli dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 11/10/2005, 11h25
  5. Réponses: 5
    Dernier message: 11/12/2002, 13h31

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