Accueil > > > CONVERSION BASE 10 => BASE N ET INVERSEMENT
CONVERSION BASE 10 => BASE N ET INVERSEMENT
Information sur la source
Description
Un vieux code réalisé en Tp il y a 2 ans que j'ai retrouvé il y a peu. Il permet de convertir un nombre écrit en base 10 en un nombre écrit dans une base comprise entre 2 et 35, ainsi que l'inverse.
Source
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import javax.swing.event.*;
-
- public class Conversions {
-
- //declarations des composants graphiques
-
- private JFrame fenetre;
- private JSlider base;
- private JPanel p1,p2,p3;
- private JTextField jfield1,jfield2;
- private JLabel label3,label2;
- private JTextArea jarea;
-
- private final static String doc = //aide contenue dans le JTextArea
- "\t\tBrève documentation de cette application... \n"+
- "\nCe petit programme permet de convertir un nombre en base 10 dans une base comprise entre 2 et 36.\n" +
- "Le \"potentiomètre\" permet de selectionner la base.\n" +
- "La modification d'un champ suivie de la validation par la touche ENTREE met à jour l'autre champ.\n" +
- "Lors d'un changement de la base, la valeur en base 10 est convertie.\n\n"+
- "Les nombres saisis s'écrivent en utilisant les chiffres de 0 à 9,\n"+
- "puis les lettres de A à Z (miniscules ou majuscules).\n";
-
- private final static String[] chiffres = {"0","1","2","3","4","5","6","7","8","9","A",
- "B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W",
- "X","Y","Z"};
-
-
- //Constructeur
- public Conversions() {
- fenetre = new JFrame("Conversions...");
- Container reser = fenetre.getContentPane();
- label2 = new JLabel("En base 10");
- label3 = new JLabel("En base 2");
- //--- haut de la fenetre -------------------------------------------------------------------------------
- String s1 = "Changement de base de numération";
- jarea = new JTextArea(doc);
- jarea.setEditable(false);
- JScrollPane jscroll = new JScrollPane(jarea);
- p1 = new JPanel(new BorderLayout());
- p1.add(jscroll,BorderLayout.NORTH);
- p1.setBorder(BorderFactory.createTitledBorder(s1));
- reser.add(p1,BorderLayout.NORTH);
- //--- JSlider ----------------------------------------------------------------------------------------------
- p2 = new JPanel(new GridLayout(0,1));
- String s2 = "Sélection de la base";
- base = new JSlider(2,36,2);
- //--- listener du slider -----------------------------------------------------------------------------------
- ChangeListener b = new ChangeListener() {
- public void stateChanged(ChangeEvent e) {
- label3.setText("En base "+base.getValue());
- label3.setHorizontalAlignment(SwingConstants.CENTER);
- String res = "";
- if (jfield1.getText() == null || jfield1.getText().length() == 0){
- jfield1.setText(JOptionPane.showInputDialog(fenetre,"Entrez un nombre en base 10","Champ \"Base 10\" vide",JOptionPane.QUESTION_MESSAGE));}//if
- String s = jfield1.getText();
- boolean erreur = false;
- for (int i =0;((i<s.length()) && (!erreur));i++) {
- if (!('0'<=s.charAt(i) && s.charAt(i)<='9')) {
- Toolkit.getDefaultToolkit().beep();
- JOptionPane.showMessageDialog(fenetre,"En base 10, on n'utilise uniquement les chiffres entre 0 et 9","Chiffre non autorisé",JOptionPane.ERROR_MESSAGE);
- erreur = true;
- }//if
- }//for
- if (!erreur) {
- int b = Integer.parseInt(jfield1.getText());
- int n = base.getValue();
- while (b != 0 ) {
- res = chiffres[b%n]+res;
- b = b/n;
- }//while
- }//if
- jfield2.setText(res);
- }
- };
- base.addChangeListener(b);
- base.setMajorTickSpacing(2);
- base.setPaintTicks(true);
- base.setPaintLabels(true);
- p2.add(base);
- p2.setBorder(BorderFactory.createTitledBorder(s2));
- reser.add(p2,BorderLayout.CENTER);
- //--- les champs de saisie --------------------------------------------------------------------------------------------
- p3 = new JPanel(new GridLayout(0,2));
- jfield1 = new JTextField("");
- jfield2 = new JTextField("");
- jfield1.setHorizontalAlignment(SwingConstants.CENTER);
- jfield2.setHorizontalAlignment(SwingConstants.CENTER);
- label2.setHorizontalAlignment(SwingConstants.CENTER);
- label3.setHorizontalAlignment(SwingConstants.CENTER);
- //--- mise a l'écoute des champs ----------------------------------------------------------------------------------------
-
- //--- champ base 10 -----------------------------------------------------------------------------------------------------
- ActionListener b10 = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String s = jfield1.getText();
- boolean erreur = false;
- for (int i =0;i<s.length() && !erreur;i++) {
- if (!('0'<=s.charAt(i) && s.charAt(i)<='9')) {
- Toolkit.getDefaultToolkit().beep();
- JOptionPane.showMessageDialog(fenetre,"En base 10, on n'utilise uniquement les chiffres entre 0 et 9","Chiffre non autorisé",JOptionPane.ERROR_MESSAGE);
- erreur = true;
- }//if
- }//for
- if (!erreur) {
- String res = "";
- int b = Integer.parseInt(jfield1.getText());
- int n = base.getValue();
- while (b != 0 ) {
- res = chiffres[b%n]+res;
- b = b/n;
- }//while
- jfield2.setText(res);
- }//if
- }//actionPerformed
- };//class anonyme
- jfield1.addActionListener(b10);
-
- //--- champ de la base n -------------------------------------------------------------------------------------------------
- ActionListener bn = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- try{
- jfield1.setText(""+Integer.parseInt(jfield2.getText(),base.getValue()));
- }catch (NumberFormatException nfe) {
- JOptionPane.showMessageDialog(fenetre,"En base "+base.getValue()+", on utilise les chiffres entre 0 et "+chiffres[base.getValue()-1],"Chiffre non autorisé",JOptionPane.ERROR_MESSAGE);
- }//catch
- }//actionPerformed
- };//class anonyme
- jfield2.addActionListener(bn);
-
- //--------------------------------------------------------------------------------------------------------------------
- p3.add(label2);
- p3.add(jfield1);
- p3.add(label3);
- p3.add(jfield2);
- reser.add(p3,BorderLayout.SOUTH);
-
- }//Conversions()
-
- //affichage
- public void afficher() {
- fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- fenetre.setSize(650,350);
- fenetre.setResizable(false);
- fenetre.setVisible(true);
- }//afficher
-
- //main
- public static void main (String [] args) {
- Conversions convertisseur = new Conversions();
- convertisseur.afficher();
- }//main
- }//class Conversions
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Conversions {
//declarations des composants graphiques
private JFrame fenetre;
private JSlider base;
private JPanel p1,p2,p3;
private JTextField jfield1,jfield2;
private JLabel label3,label2;
private JTextArea jarea;
private final static String doc = //aide contenue dans le JTextArea
"\t\tBrève documentation de cette application... \n"+
"\nCe petit programme permet de convertir un nombre en base 10 dans une base comprise entre 2 et 36.\n" +
"Le \"potentiomètre\" permet de selectionner la base.\n" +
"La modification d'un champ suivie de la validation par la touche ENTREE met à jour l'autre champ.\n" +
"Lors d'un changement de la base, la valeur en base 10 est convertie.\n\n"+
"Les nombres saisis s'écrivent en utilisant les chiffres de 0 à 9,\n"+
"puis les lettres de A à Z (miniscules ou majuscules).\n";
private final static String[] chiffres = {"0","1","2","3","4","5","6","7","8","9","A",
"B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W",
"X","Y","Z"};
//Constructeur
public Conversions() {
fenetre = new JFrame("Conversions...");
Container reser = fenetre.getContentPane();
label2 = new JLabel("En base 10");
label3 = new JLabel("En base 2");
//--- haut de la fenetre -------------------------------------------------------------------------------
String s1 = "Changement de base de numération";
jarea = new JTextArea(doc);
jarea.setEditable(false);
JScrollPane jscroll = new JScrollPane(jarea);
p1 = new JPanel(new BorderLayout());
p1.add(jscroll,BorderLayout.NORTH);
p1.setBorder(BorderFactory.createTitledBorder(s1));
reser.add(p1,BorderLayout.NORTH);
//--- JSlider ----------------------------------------------------------------------------------------------
p2 = new JPanel(new GridLayout(0,1));
String s2 = "Sélection de la base";
base = new JSlider(2,36,2);
//--- listener du slider -----------------------------------------------------------------------------------
ChangeListener b = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
label3.setText("En base "+base.getValue());
label3.setHorizontalAlignment(SwingConstants.CENTER);
String res = "";
if (jfield1.getText() == null || jfield1.getText().length() == 0){
jfield1.setText(JOptionPane.showInputDialog(fenetre,"Entrez un nombre en base 10","Champ \"Base 10\" vide",JOptionPane.QUESTION_MESSAGE));}//if
String s = jfield1.getText();
boolean erreur = false;
for (int i =0;((i<s.length()) && (!erreur));i++) {
if (!('0'<=s.charAt(i) && s.charAt(i)<='9')) {
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(fenetre,"En base 10, on n'utilise uniquement les chiffres entre 0 et 9","Chiffre non autorisé",JOptionPane.ERROR_MESSAGE);
erreur = true;
}//if
}//for
if (!erreur) {
int b = Integer.parseInt(jfield1.getText());
int n = base.getValue();
while (b != 0 ) {
res = chiffres[b%n]+res;
b = b/n;
}//while
}//if
jfield2.setText(res);
}
};
base.addChangeListener(b);
base.setMajorTickSpacing(2);
base.setPaintTicks(true);
base.setPaintLabels(true);
p2.add(base);
p2.setBorder(BorderFactory.createTitledBorder(s2));
reser.add(p2,BorderLayout.CENTER);
//--- les champs de saisie --------------------------------------------------------------------------------------------
p3 = new JPanel(new GridLayout(0,2));
jfield1 = new JTextField("");
jfield2 = new JTextField("");
jfield1.setHorizontalAlignment(SwingConstants.CENTER);
jfield2.setHorizontalAlignment(SwingConstants.CENTER);
label2.setHorizontalAlignment(SwingConstants.CENTER);
label3.setHorizontalAlignment(SwingConstants.CENTER);
//--- mise a l'écoute des champs ----------------------------------------------------------------------------------------
//--- champ base 10 -----------------------------------------------------------------------------------------------------
ActionListener b10 = new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = jfield1.getText();
boolean erreur = false;
for (int i =0;i<s.length() && !erreur;i++) {
if (!('0'<=s.charAt(i) && s.charAt(i)<='9')) {
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(fenetre,"En base 10, on n'utilise uniquement les chiffres entre 0 et 9","Chiffre non autorisé",JOptionPane.ERROR_MESSAGE);
erreur = true;
}//if
}//for
if (!erreur) {
String res = "";
int b = Integer.parseInt(jfield1.getText());
int n = base.getValue();
while (b != 0 ) {
res = chiffres[b%n]+res;
b = b/n;
}//while
jfield2.setText(res);
}//if
}//actionPerformed
};//class anonyme
jfield1.addActionListener(b10);
//--- champ de la base n -------------------------------------------------------------------------------------------------
ActionListener bn = new ActionListener() {
public void actionPerformed(ActionEvent e) {
try{
jfield1.setText(""+Integer.parseInt(jfield2.getText(),base.getValue()));
}catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(fenetre,"En base "+base.getValue()+", on utilise les chiffres entre 0 et "+chiffres[base.getValue()-1],"Chiffre non autorisé",JOptionPane.ERROR_MESSAGE);
}//catch
}//actionPerformed
};//class anonyme
jfield2.addActionListener(bn);
//--------------------------------------------------------------------------------------------------------------------
p3.add(label2);
p3.add(jfield1);
p3.add(label3);
p3.add(jfield2);
reser.add(p3,BorderLayout.SOUTH);
}//Conversions()
//affichage
public void afficher() {
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setSize(650,350);
fenetre.setResizable(false);
fenetre.setVisible(true);
}//afficher
//main
public static void main (String [] args) {
Conversions convertisseur = new Conversions();
convertisseur.afficher();
}//main
}//class Conversions
Conclusion
Tout est expliqué dans le JTextArea de l'appli, suffit d'ouvrir la capture^^
C'est pas tres objet dans le sens ou il n'y a qu'une classe seule classe qui gère tout, mais ça date de mes débuts en Java. Ideal pour se faire la main avec le JSlider.
Historique
- 15 novembre 2005 15:53:28 :
- Pb de download de la capture >_<
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
comment faire pour changer nom de la base de donnée postgres [ par merydol ]
bonjour voila mon application répond au besoin de plusieurs utilisateurs et chaque utilisateur a une base de donnée propre a lui . dans une page je ve
connexion a une base access [ par ZLATANBEN ]
salut: j ai un erreur et je ss pas comment le resoulu : sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3028)
afficher les données d'une base dans un tableau [ par najoulaF ]
salut , j'ai developpé une page jsp pour mon application qui a pour objectif d'afficher les informations stockées dans ma base des données (de type O
conexion avec base de donnees access [ par ZLATANBEN ]
SALUT; JE VEUT INSERER DES DONNEES DANS MON BASE DE DONNEES ET LES DONNEES SONT TAPPES PAR L UTILISATEURS DANS DES jTextField,j ai fait se code et il
alimentation d'une base mysql, urgent [ par safaa782003 ]
Bonjour, je suis une débutate en java, je cherche à alimenter ma base mysql à partir de mon interface java je porte à votre connaissance que j'arrive
Connetion a la base de donnee Mysql [ par fattoo88 ]
bonjour [^^sad1] mon problème est que la connexion du servlet au base de donnée ne marche pas il ne le connais pas alors j'ai un class java qui fais l
EXCEL TO XML [ par theghost19 ]
Bonjour, Je suis entrain de passer un stage, j'ai comme sujet de pfe la réalisation d'une application de suivi des indicateur en java et base de do
Netbeans & Access [ par tunisianno ]
Salut à tous, je suis en train de réaliser une application de gestion de production en utilisant Netbeans et Access comme base de donnée . SVP aide
Application chat en java [ par jc2kc2 ]
Bonsoir j'ai un petit projet à rendre concernant un simple salon de chat, avec authentification a une base de donnée. j'ai déja fini la partie interfa
afficher les données de deux bases dans la meme fenetre [ par oussamatel ]
salut à tous j'ai un petit problème qui semble facile à résoudre mais dommage j'ai pas trouvé de solution. alors pour commencer j'ai deux bases de d
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SQLRE : SQL par Julien39
Cliquez pour lire la suite par Julien39
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|