Partage
  • Partager sur Facebook
  • Partager sur Twitter

Une bonne ame pour voir si je suis dans le bon :)

J'ai besoin d'un autre regards...

Sujet résolu
    27 mars 2009 à 15:20:44

    Bonjour,

    Je fais le tuto "Java" de ce site et je trouve que contrairement a mes cours en C/C++ on ne me donne pas beaucoup d'indication sur la facon de concevoir le code (Je suis peut etre trop nul...).

    => Je code a la c++
    (un fichier par class).

    Et je crois pas que c'est bon... il compile et tout mais, certaines portions de code, crees de belle erreur dans la console.
    (Voir la Class "Fenetre.java", J'ai mis les commentaires speciaux)


    Desoler pour les mauvais thermes utilises et pour les accents manquant.
    Ou je bosse on est sur du QWERTY :euh:


    Voici mon code :

    Classe Main "Calculatrice.java"

    public class Calculatrice {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		
    		Fenetre fen = new Fenetre());// On cree une instance de l'object Fenetre
    
    	}
    
    }
    


    Classe "Fenetre.java"

    import java.awt.BorderLayout;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    
    public class Fenetre extends JFrame implements ActionListener{
    	
            //Toutes les instances principales se trouvent ici
    	private JPanel containeur = new JPanel();
    	private Resultat result = new Resultat();	
    	private ToucheNum touchNum = new ToucheNum();
    	private ToucheFun touchFun = new ToucheFun();
    	private String nombre = new String();
    	private Double total;
    	
    	public Fenetre()
    		{
    			//CONFIGURATION DE LA FENETRE
    			this.setTitle("Ma premiere calculatrice");
    			this.setSize(400, 500);
    			this.setLocationRelativeTo(null);
    			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			this.setResizable(false);
    			
    					
    			
    			//On Defini le Layout
    			containeur.setLayout(new BorderLayout());
    			containeur.add(result, BorderLayout.NORTH);
    			containeur.add(touchNum, BorderLayout.CENTER);
    			containeur.add(touchFun, BorderLayout.EAST);
    			
    			//Ajout des bouttons ecouter.
    			touchNum.getBtn0().addActionListener(this);
    			touchNum.getBtn1().addActionListener(this);
    			touchNum.getBtn2().addActionListener(this);
    			touchNum.getBtn3().addActionListener(this);
    			touchNum.getBtn4().addActionListener(this);
    			touchNum.getBtn5().addActionListener(this);
    			touchNum.getBtn6().addActionListener(this);
    			touchNum.getBtn7().addActionListener(this);
    			touchNum.getBtn8().addActionListener(this);
    			touchNum.getBtn9().addActionListener(this);
    			touchNum.getBtn0().addActionListener(this);
    			touchNum.getBtnPnt().addActionListener(this);
    			touchNum.getBtnEgal().addActionListener(this);
    			
    			touchFun.getBtnPlus().addActionListener(this);
    
    			
    			//AJOUT DES COMPOSANT DANS LE CONTAINEUR
    			this.setContentPane(containeur);
    			
    			this.setVisible(true);
    			
    		}
    
    	
    
    		public void actionPerformed(ActionEvent e) {
    		
    					String x = e.getActionCommand();
    					/*
                                            * C'EST ICI QUE CA PLANTE !!! Avec les DoubleValueOf getTexte()et doubleValue()
                                            */
    
                                            System.out.println(Double.toString(total));
    					calcul(x);
    		}
    
    		private void calcul(String x){
    		 
    			//On incremente Total pour pourvoir mettre plusieur chifres.
    			if(x == "+" || x == "-" || x == "*" || x == "/")
    			{
    			   /*
                               * C'EST ICI QUE CA PLANTE !!! Avec les DoubleValueOf getTexte()et doubleValue()
                               */	
                               total = total + Double.valueOf(result.getTexte()).doubleValue();
    			}
    		
    			else{
    			   
                               /*
                               * C'EST ICI QUE CA PLANTE !!! Avec les DoubleValueOf et doubleValue()
                               */	
                                 
                                   total += Double.valueOf(x).doubleValue();
    				
                                 }
    		
    			   /*
                               * C'EST ICI QUE CA PLANTE !!! Avec le toString()
                               */
    			     result.setResult(total.toString());
    		 }
    }
    


    Class "ToucheNum.java" // Elle gere la partie boutton numerique, egal et le '.'

    import javax.swing.JButton;
    import javax.swing.JPanel;
    
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    
    public class ToucheNum extends JPanel{
    	
    	private JButton btnEgal = new JButton("=");
    	private JButton btnPnt = new JButton(".");
    	private JButton btn0 = new JButton("0");
    	private JButton btn1 = new JButton("1");
    	private JButton btn2 = new JButton("2");
    	private JButton btn3 = new JButton("3");
    	private JButton btn4 = new JButton("4");
    	private JButton btn5 = new JButton("5");
    	private JButton btn6 = new JButton("6");
    	private JButton btn7 = new JButton("7");
    	private JButton btn8 = new JButton("8");
    	private JButton btn9 = new JButton("9");
    
    	public ToucheNum()
    		{
    			this.setLayout(new GridLayout(4,3));
    			this.add(btn9);
    			this.add(btn8);
    			this.add(btn7);
    			this.add(btn6);
    			this.add(btn5);
    			this.add(btn4);
    			this.add(btn3);
    			this.add(btn2);
    			this.add(btn1);			
    			this.add(btnPnt);
    			this.add(btn0);
    			this.add(btnEgal);
    			
    		}
    
    	public JButton getBtnEgal() {
    		return btnEgal;
    	}
    
    	public void setBtnEgal(JButton btnEgal) {
    		//this.btnEgal = btnEgal;
    	}
    
    	public JButton getBtnPnt() {
    		return btnPnt;
    	}
    
    	public void setBtnPnt(JButton btnPnt) {
    		//this.btnPnt = btnPnt;
    	}
    
    	public JButton getBtn0() {
    		return btn0;
    	}
    
    	public void setBtn0(JButton btn0) {
    		//this.btnBn0 = btn0);
    	}
    
    	public JButton getBtn1() {
    		return btn1;
    	}
    
    	public void setBtn1(JButton btn1) {
    		//this.btnBtn1 = btn1;
    	}
    
    	public JButton getBtn2() {
    		return btn2;
    	}
    
    	public void setBtn2(JButton btn2) {
    		//this.btnBtn2 = btn2;
    	}
    
    	public JButton getBtn3() {
    		return btn3;
    	}
    
    	public void setBtn3(JButton btn3) {
    		//this.btn3 = btn3;
    	}
    
    	public JButton getBtn4() {
    		return btn4;
    	}
    
    	public void setBtn4(JButton btn4) {
    		//this.btn4 = btn4;
    	}
    
    	public JButton getBtn5() {
    		return btn5;
    	}
    
    	public void setBtn5(JButton btn5) {
    		//this.btn5 = btn5;
    	}
    
    	public JButton getBtn6() {
    		return btn6;
    	}
    
    	public void setBtn6(JButton btn6) {
    		//this.btn6 = btn6;
    	}
    
    	public JButton getBtn7() {
    		return btn7;
    	}
    
    	public void setBtn7(JButton btn7) {
    		//this.btn7 = btn7;
    	}
    
    	public JButton getBtn8() {
    		return btn8;
    	}
    
    	public void setBtn8(JButton btn8) {
    		//this.btn8 = btn8;
    	}
    
    	public JButton getBtn9() {
    		return btn9;
    	}
    
    	public void setBtn9(JButton btn9) {
    		//this.btn9 = btn9;
    	}
    
    }
    


    Class "TouchFun.java" // Elle gere les touches fonctionnelles (+, -, *, /, C).

    import javax.swing.JPanel;
    import javax.swing.JButton;
    
    import java.awt.GridLayout;
    
    
    public class ToucheFun extends JPanel{
    	
    	private JButton btnC = new JButton("C");
    	private JButton btnPlus = new JButton("+");
    	private JButton btnMinus = new JButton("-");
    	private JButton btnMult = new JButton("*");
    	private JButton btnDiv = new JButton("/");
    	
    	public ToucheFun()
    		{
    			this.setLayout(new GridLayout(5, 1));
    			this.add(btnC);
    			this.add(btnPlus);
    			this.add(btnMinus);
    			this.add(btnMult);
    			this.add(btnDiv);
    		}
    
    	public JButton getBtnC() {
    		return btnC;
    	}
    
    	public void setBtnC(JButton btnC) {
    		this.btnC = btnC;
    	}
    
    	public JButton getBtnPlus() {
    		return btnPlus;
    	}
    
    	public void setBtnPlus(JButton btnPlus) {
    		this.btnPlus = btnPlus;
    	}
    
    	public JButton getBtnMinus() {
    		return btnMinus;
    	}
    
    	public void setBtnMinus(JButton btnMinus) {
    		this.btnMinus = btnMinus;
    	}
    
    	public JButton getBtnMult() {
    		return btnMult;
    	}
    
    	public void setBtnMult(JButton btnMult) {
    		this.btnMult = btnMult;
    	}
    
    	public JButton getBtnDiv() {
    		return btnDiv;
    	}
    
    	public void setBtnDiv(JButton btnDiv) {
    		this.btnDiv = btnDiv;
    	}
    	
    }
    



    Class "Resultat.java" // Partie qui gere l'affichage du resultat.

    import java.awt.Dimension;
    
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    
    public class Resultat extends JPanel{
    	
    	private JLabel result = new JLabel();
    		
    	public Resultat(){
    		
    		result.setText("0.0");
    		
    		this.add(result);
    		this.setPreferredSize(new Dimension(this.getWidth(), 50));
    		
    	}
    
    	public JLabel getResult() {
    		return result;
    	}
    
            /*
            *  Ici j'ai modifie volontairement les methodes
            */
    
    	public void setResult(String result) {
    		this.result.setText(result);
    	}
    
    	public String getTexte() {
    		return result.getText();
    	}
    	
    	
    	
    }
    



    Ce code n'est pas acheve et je sais qu'il est sans doute plein de fautes (Mais il marche, j'ai une fenetre qui ressemble a une calculatrice )... donc soyez gentil avec vos remarques merci :lol:


    Voila en resumer,
    J'amerai comprendre comment ceci fonctionne ^^ et si je suis completement a cote de la plaque avec mon programme.

    Double.toString(INSTANCE));
    
    Double.valueOf(INSTANCE.getTexte()).doubleValue();
    
    INSTANCE.toString()
    



    Un tout grand merci aux motive(e)s.



    • Partager sur Facebook
    • Partager sur Twitter
      27 mars 2009 à 15:53:05

      Déclare ta variable en double (et non Double).
      • Partager sur Facebook
      • Partager sur Twitter
        27 mars 2009 à 16:53:13

        Citation : Mric_

        Déclare ta variable en double (et non Double).



        BINGO, merci beaucoup... je comprends pas comment j'ai pu passer a coter de ca...

        Mais bon faire un toString sur un double apparement ca passe pas (il compile nikel mais le programme me dis des gros mots quand j'utilise les touches de la calculatrice).

        result.setResult(total.toString());
        


        Resultat :
        Image utilisateur


        Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem: 
        	Cannot invoke toString() on the primitive type double
        
                at Fenetre.calcul(Fenetre.java:89)
        	at Fenetre.actionPerformed(Fenetre.java:73)
        	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1882)
        	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2202)
        	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
        	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
        	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        	at java.awt.Component.processMouseEvent(Component.java:5602)
        	at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
        	at java.awt.Component.processEvent(Component.java:5367)
        	at java.awt.Container.processEvent(Container.java:2010)
        	at java.awt.Component.dispatchEventImpl(Component.java:4068)
        	at java.awt.Container.dispatchEventImpl(Container.java:2068)
        	at java.awt.Component.dispatchEvent(Component.java:3903)
        	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4256)
        	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3936)
        	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3866)
        	at java.awt.Container.dispatchEventImpl(Container.java:2054)
        	at java.awt.Window.dispatchEventImpl(Window.java:1801)
        	at java.awt.Component.dispatchEvent(Component.java:3903)
        	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
        	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
        	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
        	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
        	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
        



        Merci en tous ca ca ma deja bien aider...

        Mais ceci, je vois que ma facon de coder en Java a besoin d'etre ameliore.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          27 mars 2009 à 17:12:49

          double est un type primitif alors que Double est une classe, un type primitif n'a pas de méthode donc pas de toString()

          si tu veux une String depuis un nombre fais simplement String.valueOf(nombre);
          • Partager sur Facebook
          • Partager sur Twitter
            27 mars 2009 à 17:52:26

            Merci beaucoup, voila grace a vos deux reponses j'ai tout compris... ca tue.

            Je vous tiens au courant pour la suite j'ai pas le temps de finir, la tout de suite, mon programme.
            je dois encore inscrire les fonctions -, /, ... et autres comportement d'une calculatrice.

            Mais sinon, ma facon de faire le code elle pas trop lourde ?

            car quand je me compare a la reponse du TP tuto sur la calculatrice en Java / Auteur : cysboy , ca a rien a voir...
            J'ai pas tous mis dans le meme fichier.



            J'ai voulu creer aussi un tableau pour mes boutons, mais quand on me dis :

            Citation : Citation de cysboy dans le TP Une calculatrice

            Maintenant, voyons ce dont nous avons besoin pour réussir ça :

            * Autant de boutons qu'il en faut....



            Ben je le prends a la lettre moi :-°

            Encore Merci !!!

            • Partager sur Facebook
            • Partager sur Twitter

            Une bonne ame pour voir si je suis dans le bon :)

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown