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

avec Java Discussion :

Programme JAVA - aide minime


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Programme JAVA - aide minime
    Bonjour à tous,

    alors voilà, je suis un élève de terminale en section ISN, notre professeur nous a donné tout au long de l'année un algorithme à faire et à ensuite reconvertir en JAVA et ensuite en faire un programme avec des boutons.
    J'en suis à la fin j'ai mon application graphique avec tous les boutons, seulement voilà, je ne sais pas associé mon bouton "Traduire" à mon algorithme qui permet de transformer un mot en binaire, je vous laisse voir mon code :

    ceci est ma classe conteneur : ( si vous voulez les autres, dite le moi ), mon problème est vers la fin, ou le bouton traduire doit executé mon algo pour afficher sur le texte résultat bah le résultat x) Merci d'avance pour votre aide

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    import java.awt.Button;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Label;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Scanner;
    import javax.swing.JPanel;
     
     
    public class Conteneur extends JPanel implements ActionListener {
     
    	/************************************************************/
    	// Variables
    	/************************************************************/
     
    	   Label lbmot = new Label();
    	   Label lbresultat = new Label();
    	   TextField txmot = new TextField();
    	   TextField txresultat = new TextField();
    	   Button bttraduire = new Button("Traduire");
     
    	   Font police = new Font("Arial", Font.BOLD, 15);
    	   int mot = 0;
     
     
     
    		// Initialisation des Label
     
    	   public Conteneur() {
    			setLayout(null);
     
    	lbmot.setBounds(100, 5, 100, 20);
    	lbmot.setText("Entrer un mot");
    	lbmot.setBackground(Color.black);
    	lbmot.setForeground(Color.white);
    	lbmot.setFont(police);
     
    	lbresultat.setBounds(105, 90, 80, 20);
    	lbresultat.setForeground(Color.white);
    	lbresultat.setBackground(Color.black);
    	lbresultat.setAlignment(Label.CENTER);
    	lbresultat.setText("Résultat");
    	lbresultat.setFont(police);
     
    		// Initialisation zone de texte
     
    	txmot.setBounds(50, 30, 200, 40);
     
    	txresultat.setBounds(50, 120, 200, 40);
     
     
    		// Initialisation des boutons
     
    	bttraduire.setBounds(100, 180, 100, 30);
    	bttraduire.setFont(police);
    	bttraduire.setForeground(Color.red);
    	bttraduire.setBackground(Color.black);
    	bttraduire.addActionListener(this);
     
    		// Ajout des objets au conteneur
     
    	add(lbmot);
    	add(lbresultat);
     
    	add(txmot);
    	add(txresultat);
     
    	add(bttraduire);
    	   }
     
    		// Debut programme (fonctions)
     
    	public int codeur(){
     
    		int code = 0;
    		int i = 0;
    		int reste = 0;
    		int quotient = 0;
    		int nbbinaire = 0;
    		int puissance = 0;
    		String mot = new String();
     
    		// Debut algorithme, entrer mot
     
    				System.out.println(" Veuillez entrer un mot :");
     
    				// Lecture de la variable
     
    				Scanner sc = new Scanner(System.in);
    				mot = sc.next();
     
     
    				// Obtention du code ASCII
     
    				for (i = 0 ; i <= mot.length()-1 ; i++) {
     
    					code = mot.charAt(i);
    					puissance = 1;
    					nbbinaire = 0;
     
     
    					while (code!=0) {
     
    				// Obtention du code binaire
     
    				    quotient = (int) Math.floor(code / 2d);
    					reste = code%2;
    					nbbinaire = nbbinaire + reste * puissance;
    					puissance = puissance*10;
    					code = quotient;
     
    					}
     
     
    					System.out.print(0);
    					System.out.print(nbbinaire);
     
    				}
    				return nbbinaire;
    	}
     
     
    				// Evènement déclenché par le clic "Traduire"
     
    	public void actionPerformed1(ActionEvent e) {
    		Object source = e.getSource();  // Détection du bouton dont provient le clic
     
    		if ( source == bttraduire ){
     
    			txresultat.setText(String.valueOf(codeur()));
     
     
     
    		}
    		}
     
     
     
    	public void actionPerformed(ActionEvent arg0) {
     
    	} }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Le code qui est dans actionPerformed1 doit être déplacé dans actionPerformed et tu peux supprimer actionPerformed1 elle ne sert à rien cette méthode.

    Romain.

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    merci mais mon but est que mon programme affiche le résultat de mon algorithme ^^

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Prenons les choses dans l'ordre. Ta question était :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je ne sais pas associé mon bouton "Traduire" à mon algorithme qui permet de transformer un mot en binaire
    Quand tu cliques sur le bouton Traduire c'est la méthode actionPerformed qui est appelée. Il faut donc mettre le code de ton algorithme dans cette méthode. Donc ça devrait répondre à ta première question ?

    Pour ta deuxième question. Ton erreur se situe à ce niveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    String mot = new String();
     
    		// Debut algorithme, entrer mot
     
    				System.out.println(" Veuillez entrer un mot :");
     
    				// Lecture de la variable
     
    				Scanner sc = new Scanner(System.in);
    				mot = sc.next();
    En mode graphique tu ne veux pas lire ton mot depuis la console, mais depuis ton TextField. Il ne faut plus faire appel à Scanner. Remplace par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String mot = txmot.getText();
    Dans ta méthode codeur, il ne faut pas utiliser de system.out non plus pour afficher le résultat. System.out ça affiche le résultat dans la console. Il faut que tu mettes le résultat de ta conversion binaire dans un StringBuffer. :

    Au final ça donne :
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    public class Conteneur extends JPanel implements ActionListener
    {
     
        /**
         * serialVersionUID
         */
        private static final long serialVersionUID = 1L;
     
        /************************************************************/
        // Variables
        /************************************************************/
     
        Label lbmot = new Label();
     
        Label lbresultat = new Label();
     
        TextField txmot = new TextField();
     
        TextField txresultat = new TextField();
     
        Button bttraduire = new Button("Traduire");
     
        Font police = new Font("Arial", Font.BOLD, 15);
     
        int mot = 0;
     
        // Initialisation des Label
     
        public Conteneur()
        {
            setLayout(null);
     
            lbmot.setBounds(100, 5, 100, 20);
            lbmot.setText("Entrer un mot");
            lbmot.setBackground(Color.black);
            lbmot.setForeground(Color.white);
            lbmot.setFont(police);
     
            lbresultat.setBounds(105, 90, 80, 20);
            lbresultat.setForeground(Color.white);
            lbresultat.setBackground(Color.black);
            lbresultat.setAlignment(Label.CENTER);
            lbresultat.setText("Résultat");
            lbresultat.setFont(police);
     
            // Initialisation zone de texte
     
            txmot.setBounds(50, 30, 200, 40);
     
            txresultat.setBounds(50, 120, 200, 40);
     
            // Initialisation des boutons
     
            bttraduire.setBounds(100, 180, 100, 30);
            bttraduire.setFont(police);
            bttraduire.setForeground(Color.red);
            bttraduire.setBackground(Color.black);
            bttraduire.addActionListener(this);
     
            // Ajout des objets au conteneur
     
            add(lbmot);
            add(lbresultat);
     
            add(txmot);
            add(txresultat);
     
            add(bttraduire);
        }
     
        // Debut programme (fonctions)
     
        public String codeur()
        {
     
            int code = 0;
            int i = 0;
            int reste = 0;
            int quotient = 0;
            int nbbinaire = 0;
            int puissance = 0;
            String mot = txmot.getText();
     
            StringBuffer resultat = new StringBuffer();
            // Obtention du code ASCII
            for (i = 0; i <= mot.length() - 1; i++)
            {
     
                code = mot.charAt(i);
                puissance = 1;
                nbbinaire = 0;
     
                while (code != 0)
                {
     
                    // Obtention du code binaire
     
                    quotient = (int) Math.floor(code / 2d);
                    reste = code % 2;
                    nbbinaire = nbbinaire + reste * puissance;
                    puissance = puissance * 10;
                    code = quotient;
     
                }
     
                resultat.append(0).append(nbbinaire);
     
            }
            return resultat.toString();
        }
     
        public void actionPerformed(ActionEvent arg0)
        {
            Object source = arg0.getSource(); // Détection du bouton dont provient le clic
     
            if (source == bttraduire)
            {
                txresultat.setText(codeur());
     
            }
        }
    }
    Romain.

  5. #5
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonsoir romain,

    merci beaucoup de ton aide, c'est super j'apprécie beaucoup, j'étais bloqué, mais par contre, est-ce qu'il serait possible de mettre des commentaires, car il y'a certaines actions que je ne comprend pas, car c'est un programme avec lequel je vais être évalué au BAC ^^, merci beaucoup en tout cas

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    S'il y a des choses que tu n'as pas comprises n'hésite pas à demander, je t'expliquerai.

    Je ne sais pas quel est le niveau qui est demandé au BAC, mais le code peut être grandement amélioré. Il fonctionne certes, mais n'est pas propre. Ici tu as le modèle, le contrôleur et la vue dans la même classe, avec le modèle (la fonction codeur()) qui a une dépendance forte avec la vue (codeur faisant appel à txmot.getText()). Cette classe ne respecte donc pas l'architecture MVC.

    Romain.

  7. #7
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    salut romain !

    bah en fait on passe à l'oral sur toute l'année dabord on a utiliser algobox pour créer l'algorithme et ensuite on l'a programmé en java.
    j'aimerai juste des petites explications sur par exemple la fonction string.buffer sert à quoi ? tu vois des petits commentaires sur les fonctions utilisés et qu'est ce qu'elles font

    en tout cas, merci beaucoup de ton aide, ça me fait super plaisir, je trouve ça de plus en plus rare des gens comme toi ! et comme ceux qui ont prit la peine de m'aider !

    andréa

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Un StringBuffer ça sert à concaténer des chaînes de caractères. Tu commences par créer un buffer vide :
    Tu remplis ton buffer au fur à mesure avec les résultats que tu as calculés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat.append(0).append(nbbinaire)
    Tu construis une chaîne de caractères (un String en Java) représentant le résultat avec la fonction toString ("vers String" en traduction littérale ) et tu renvoies ce résultat avec le mot clé "return" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return resultat.toString();
    Romain.

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Petite précision concernant l'explication du Buffer de Romain.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat.append(0).append(nbbinaire)
    La fonction append() permet de rajouter du contenu à la suite de ta chaine.
    Sauf que dans ton cas, c'est des 0 ou des 1 qui vont venir se greffer à ta chaine à chaque division.

    Donc je ne suis pas sûr que le premier append(0) soit nécessaire.

    Pour moi un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat.append(nbbinaire)
    donne le même résultat.

    EDIT : Et concernant des actions ou méthodes que tu pourrais ne pas comprendre.
    Tu peux faire un tour, soit sur la FAQ JAVA où il existe des exemples bien expliqués.

    Et pour aller un peu plus loin, sur la documentation d'Oracle.
    http://docs.oracle.com/javase/7/docs/api/

    Tu as toutes les classes sur ta gauche, il te suffit de chercher la bonne, puis de chercher la bonne méthode, avec la bonne signature, et tu verras ce qu'elle fera.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Citation Envoyé par Neewd Voir le message
    Petite précision concernant l'explication du Buffer de Romain.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat.append(0).append(nbbinaire)
    La fonction append() permet de rajouter du contenu à la suite de ta chaine.
    Sauf que dans ton cas, c'est des 0 ou des 1 qui vont venir se greffer à ta chaine à chaque division.

    Donc je ne suis pas sûr que le premier append(0) soit nécessaire.

    Pour moi un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat.append(nbbinaire)
    resultat.append(nbbinaire)
    Bonjour,

    "resultat.append(0).append(nbbinaire)" ne peut pas donner le même résultat que "resultat.append(nbbinaire)". Tu auras toujours un caractère "0" en plus dans le premier cas quelque soit la valeur de nbbinaire.

    Si tu enlèves le "append(0)", et que tu prends le mot "test", la fonction codeur() te renverra "1110100110010111100111110100" alors que si tu laisses le "append(0)" elle te renverra "01110100011001010111001101110100" (cette seconde valeur est correcte, la première est fausse).

    Romain.

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Ah c'est pour l'application dans ce cas alors, je n'avais pas vu cette subtilité

  12. #12
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci pour les explications, je ferai de mon mieux,

    et quand on fait : getText ( String mot = txmot.getText(); )
    cela veut dire que le résultat s'écrit dans la boite de texte ?

    EDIT : et quant tu dis concaténer des chaines, je ne comprend pas réellement ^^'

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    ça veut dire que tu récupères le mot que tu as tapé dans le formulaire. En développement :
    - get = récupérer
    - set = initialiser ou mettre à jour

    Concaténer... Source Wikipédia :
    Le terme concaténation (substantif féminin), du latin cum (« avec ») et catena (« chaîne, liaison »), désigne l'action de mettre bout à bout au moins deux chaînes.
    Si tu concatènes "a" et "b", ça donne "ab". Si tu concatènes "a", "b" et "c" ça donne "abc"...

    Romain.

  14. #14
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    merci beaucoup, c'est bon j'ai tout compris , encore merci !!!

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/01/2011, 13h13
  2. [Language] Aide sur mon premier programme Java?
    Par hash2zo dans le forum Langage
    Réponses: 15
    Dernier message: 27/09/2005, 19h26

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