Convertion en base 2, 8 ou 16

jsand094 - 29 sept. 2012 à 22:36
 Utilisateur anonyme - 28 oct. 2012 à 22:09
Bonjour,
j'ai écris un programme de convertion en Interface graphique à l'aide de Netbean. Ce programme me permet de convertir un nombre de base 10 compri entre 0 et 1000, vers la base 2, 8 ou 16 selon le choix de l'utilisateur. Seulement, le resultat ne s'affiche pas .

package conv;
/**
 * @author sandé
 */
public class Convert extends javax.swing.JFrame {
    /**
     * Creates new form Convert
     */
    public Convert() {
        initComponents();
    }
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jInternalFrame1 = new javax.swing.JInternalFrame();
        jInternalFrame2 = new javax.swing.JInternalFrame();
        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jTextField3 = new javax.swing.JTextField();
        jButton2 = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();

        jInternalFrame1.setVisible(true);

        javax.swing.GroupLayout jInternalFrame1Layout = new javax.swing.GroupLayout(jInternalFrame1.getContentPane());
        jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout);
        jInternalFrame1Layout.setHorizontalGroup(
            jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );
        jInternalFrame1Layout.setVerticalGroup(
            jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jInternalFrame2.setVisible(true);

        jLabel1.setText("Nombre a converstir :");

        jButton1.setText("OK");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jTextField1.setText("jTextField1");

        jLabel2.setText("Resultat :");

        jTextField2.setText("jTextField2");

        jLabel3.setText("En  base  2,  8 ou 16  :");

        jTextField3.setText("jTextField3");

        jButton2.setText("Quitter");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jLabel4.setText("...");

        jLabel5.setText("...");

        javax.swing.GroupLayout jInternalFrame2Layout = new javax.swing.GroupLayout(jInternalFrame2.getContentPane());
        jInternalFrame2.getContentPane().setLayout(jInternalFrame2Layout);
        jInternalFrame2Layout.setHorizontalGroup(
            jInternalFrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jInternalFrame2Layout.createSequentialGroup()
                .addGap(29, 29, 29)
                .addGroup(jInternalFrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jInternalFrame2Layout.createSequentialGroup()
                        .addGroup(jInternalFrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 112, Short.MAX_VALUE)
                            .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(18, 18, 18)
                        .addGroup(jInternalFrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jInternalFrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 115, Short.MAX_VALUE)
                                .addComponent(jTextField3, javax.swing.GroupLayout.Alignment.LEADING)))
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(jInternalFrame2Layout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(jButton2)
                        .addGap(41, 41, 41))))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jInternalFrame2Layout.createSequentialGroup()
                .addGap(69, 69, 69)
                .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 105, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(27, 27, 27))
            .addGroup(jInternalFrame2Layout.createSequentialGroup()
                .addGap(68, 68, 68)
                .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        jInternalFrame2Layout.setVerticalGroup(
            jInternalFrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jInternalFrame2Layout.createSequentialGroup()
                .addGap(29, 29, 29)
                .addGroup(jInternalFrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jInternalFrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jInternalFrame2Layout.createSequentialGroup()
                        .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(jInternalFrame2Layout.createSequentialGroup()
                        .addGap(5, 5, 5)
                        .addComponent(jTextField3)))
                .addGroup(jInternalFrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jInternalFrame2Layout.createSequentialGroup()
                        .addGap(24, 24, 24)
                        .addComponent(jButton1))
                    .addGroup(jInternalFrame2Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(18, 18, 18)
                .addGroup(jInternalFrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(jButton2)
                .addGap(24, 24, 24))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jInternalFrame2, javax.swing.GroupLayout.Alignment.TRAILING)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jInternalFrame2, javax.swing.GroupLayout.Alignment.TRAILING)
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        int nombre = Integer.parseInt(jTextField1.getText());
        int reste;
        int a;
        String tab [] = new String [10]; //la table me servira à conserver mes restes
        int reponse;
        String rep = "";
        if(nombre<0 || nombre >1000){
            jLabel4.setText("Attention ! ce nombre est invalide");
        }else{
            jLabel4.setText("Nombre valide");
        }
        a = Integer.parseInt(jTextField3.getText());
        if((a!=2)&&(a!=8)&&(a!=16)){
            jLabel5.setText("Attention ! cette base est invalide");
        }else{
            jLabel5.setText("Base valide");
        }
            int i;
            for(i=0; i>nombre; i++){
                reste = nombre%a;
                nombre = nombre/a;
                Integer nb = new Integer(nombre);
                tab[i] = nb.toString();
            }
                if(nombre==0){
                jTextField2.setText("0");
                }
                for(int j=i-1; j>=0; j++){
                    if (a==16){
                        switch(tab[j]){
                        
                        case "10": tab[j]= "A ";
                        break;
                        case "11": tab[j]= "B ";
                        break;
                        case "12": tab[j]= "C ";
                        break;    
                        case "13": tab[j]= "D ";
                        break;   
                        case "14": tab[j]= "E ";
                        break;   
                        case "15": tab[j]= "F ";
                        break;    
                        default: tab[j]= tab[j];
                        }
                     }
                          rep = rep+tab[j];
                }
                jTextField2.setText(rep);
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
            System.exit(0);
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Convert.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Convert.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Convert.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Convert.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Convert().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JInternalFrame jInternalFrame1;
    private javax.swing.JInternalFrame jInternalFrame2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // End of variables declaration
}

La version normale (sans l'interface s'exécute très bien !) à la difference qu'icicj'utilise un tableau d'Integer mais labas, un tableau de String à cause du jTextField2.

import java.util.Scanner;
 /*la fonction Scanner permettra la saisie de nombre avec le clavier
*/
public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

  //initialisation des variables
        int nombre;    
        int reste;
        int a;
        int tab [] = new int [10]; //la table me servira à conserver mes restes
        int reponse;
        Scanner sc = new Scanner(System.in);

  // Début de l'exécution du programme de conversion
      do{
          do{
            System.out.println("Veuillez entrez un nombre entre 0 et 1000 : ");
            nombre = sc.nextInt();
            
  // Pour la validation des nombres saisis   
            if((nombre<0)||(nombre>1000)){
                System.out.println("Nombre Invalide");
            }
          }while((nombre<0)||(nombre>1000));
                   
           do{
               System.out.println("Entrez la Base (2, 8, 16) :");
               a = sc.nextInt();

  // Pour la validation de la base entrée               
             if((a!=2)&&(a!=8)&&(a!=16)){
                 System.out.println("Base invalide");
             }
           }while((a!=2)&&(a!=8)&&(a!=16));
            int i;
            for( i=0 ; nombre>0 ; i++){
                reste = nombre%a;
                nombre = nombre/a;
                tab[i] = reste;

            }
            System.out.print("Résultat: ");
             if(nombre==0){
                        System.out.println('0');
          }
  /*
   le compteur j permettra la saisie des restes dans le sens contraire à i
   * Les caractères A, B, C, D E et F sont écrits respectivement à la place
   des restes de valeurs 10, 11, 12, 13, 14 et 15 à la base 16.
  */           
            for(int j=i-1 ; j>=0 ; j--){
                if(a == 16){
                    switch (tab[j]){
                        case 10: System.out.print("A ");
                        break;
                        case 11: System.out.print("B ");
                        break;
                        case 12: System.out.print("C ");
                        break;
                        case 13: System.out.print("D ");
                        break;
                        case 14: System.out.print("E ");
                        break;
                        case 15: System.out.print("F ");
                        break;
                        default: System.out.print(tab[j]+ " ");
                        break;
                   }
               }else
                    {System.out.print(tab[j]+" "); // pour afficher le contenu
                }
                    
           }
            
            System.out.println();
            System.out.println("voulez-vous continuer ? oui 0 et non1 : ");
            reponse = sc.nextInt();
        }while(reponse == 0);
 System.out.println("Fin normale du programme");

     //  C'est ainsi que Ce programme de conversion prend fin.

    }
}

Merci d'avance pour vos corrections Jsande

7 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
30 sept. 2012 à 10:27
Salut,

Pourquoi faire le changement de base toi même et ne pas utiliser les fonctions offertes par java ?
base 2: Integer.toBinaryString
base 8: Integer.toOctalString
base 10: Integer.toString
base 16: Integer.toHexString

Ou encore plus simplement en spécifiant la base directement int) Integer.toString(int n, int radix)

-----

"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
1 oct. 2012 à 11:19
Salut,

Je suis d'accord avec Twinuts, qui plus est, tu postes un peu trop de code pour que je puisse m'y retrouver...
0
Utilisateur anonyme
2 oct. 2012 à 23:05
Salut,

Je suis du même avis que Julien39 et Twinuts. D'autant plus qu'avec ce qui est généré par Netbeans, on est face à un code immonde . Ton problème est-il résolu ?


--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0
Pour repondre à Twinuts, c'etait un TP ou on demandait d'ecrire le code pour la convertion sans passer par les fonctions offertes par Java (seulement en connaissance du mode de calcul par divisions successives). Je l'ai reussi et il m'est venu à l'idee de le mettre dans une interface. le code est bcp plus claire à present. À la toute dernière ligne, c'est jTextField2.setText(rep); qui ne marche pas, sinon, tout le reste fonctionne très bien dans l'interface.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        int nombre = Integer.parseInt(jTextField1.getText());
        int reste;
        int a;
        String tab [] = new String [10]; //la table me servira à conserver mes restes
        int reponse;
        String rep = "";
        if(nombre<0 || nombre >1000){
            jLabel4.setText("Attention ! ce nombre est invalide");
        }else{
            jLabel4.setText("Nombre valide");
        }
        a = Integer.parseInt(jTextField3.getText());
        if((a!=2)&&(a!=8)&&(a!=16)){
            jLabel5.setText("Attention ! cette base est invalide");
        }else{
            jLabel5.setText("Base valide");
        }
            int i;
            for(i=0; i>nombre; i++){
                reste = nombre%a;
                nombre = nombre/a;
                Integer nb = new Integer(nombre);
                tab[i] = nb.toString();
            }
                if(nombre==0){
                    jTextField2.setText("0");
                }
                for(int j=i-1; j>=0; j++){
                    if (a==16){
                        switch(tab[j]){
                        
                        case "10": tab[j]= "A ";
                        break;
                        case "11": tab[j]= "B ";
                        break;
                        case "12": tab[j]= "C ";
                        break;    
                        case "13": tab[j]= "D ";
                        break;   
                        case "14": tab[j]= "E ";
                        break;   
                        case "15": tab[j]= "F ";
                        break;    
                        }
                     }
                          rep = rep+tab[j];
                }
                jTextField2.setText(rep); // ne marche pas
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            System.exit(0);
    }  


Jsande
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tout compte fait, Twinuts a peut-être raison, faut pas se compliquer la vie.
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
6 oct. 2012 à 06:21
salut ;o)

te manquerait pas un repaint() ??! ;o)


GodConan ;o)
0
Utilisateur anonyme
28 oct. 2012 à 22:09
Salut,

Alors, où en es-tu dans la résolution de ton problème ?


--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0
Rejoignez-nous