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
Connection base Access?? [ par muad-dib ]
Salutcomment faire pour me connecter à ma base access depuis un applet..?
Y a t il des risques a lier une applets directement a un e Base [ par sarani ]
Y a t il des risques a lier une applets directement a un e Base de données du point de vue securité ?
un petit pb de conversion [ par bidules ]
bonjour,voila g créé une grille de bouton en faisant un gridlayout. Pour créer les boutons je fais en toute logique un "for" mais voila j'aimerais num
novice recherche développeurs confirmés... [ par olympien13 ]
Bonjour à tous,Etant novice, j'aurais voulu savoir si qlq'1 connaissait la solution à mon pb.Je v essayer de m'expliquer.Je dispose de 2 listes déroul
Conversion d'un string en float ou double [ par massat ]
Bonjour,je suis débutant en java depuis 2 jours. J'essaye de créer une simple calculatrice afin de m'améliorer.J'arrive à transformer des string en in
Conversion d'un string en float ou double [ par massat ]
Bonjour,je suis débutant en java depuis 2 jours. J'essaye de créer une simple calculatrice afin de m'améliorer.J'arrive à transformer des string en in
Base de données [ par bibe ]
Bonjour, je ne trouve pas dans la doc "jdk1.2" de méthode qui me permette de savoir combien il y a d'enregistrement dans ma table.
question pour les pro [ par bidules ]
Bonjour,j'aimerais utiliser une applet pour gerer l'interface graphique d'une base de donnéesje m'explique :l'applet va devoir envoyer des requete sql
applet et base de données [ par skysee ]
Bonjour,je voudrais savoir comment communiquer avec une base de données Mysql et éxécuter des requetes sql dans une applet?merci
Acces à la base de registre [ par Schouly ]
Y a t-il un moyen d'accéder à la base de registre Windows en Java.@ +Schouly
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|