Partage
  • Partager sur Facebook
  • Partager sur Twitter

Equation du second degré

Type de variable

    14 janvier 2019 à 12:41:08

    Bonjour à tous et bonne année,

    je n'arrive pas à afficher les bon calculs, je me doute qu'il y a un problème de type de données (double vs Text) mais j'ai regardé partout sur le net mais sans réponse.

    voici le prog,

    Merci de votre compréhension

    import java.awt.EventQueue;
    //import java.util.Scanner;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    public class fen {
    	private JFrame frame;
    	private JTextField textField;
    	private JTextField textField_1;
    	private JTextField textField_2;
    	private JTextField textField_3;
    	private JTextField textField_4;
    	private JTextField textField_5;
    
    //	 * Launch the application.
    	
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					fen window = new fen();
    					window.frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    
    //	 * Create the application.
    	
    	public fen() {
    		initialize();
    	}
    
    	
    // * Initialize the contents of the frame.
    	
    	private void initialize() {
    		frame = new JFrame();
    		frame.setBounds(100, 100, 450, 300);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.getContentPane().setLayout(null);
    		//TEXT A
    		JLabel lblNewLabel = new JLabel("Entrer A");
    		lblNewLabel.setBounds(36, 48, 78, 16);
    		frame.getContentPane().add(lblNewLabel);
    		//TEXT B
    		JLabel lblNewLabel_1 = new JLabel("Entrer B");
    		lblNewLabel_1.setBounds(34, 79, 56, 16);
    		frame.getContentPane().add(lblNewLabel_1);
    		//TEXT C
    		JLabel lblNewLabel_2 = new JLabel("Entrer C");
    		lblNewLabel_2.setBounds(34, 108, 56, 16);
    		frame.getContentPane().add(lblNewLabel_2);
    		
    		//TEXT DELTA
    		JLabel lblNewLabel_3 = new JLabel("DELTA");
    		lblNewLabel_3.setBounds(34, 137, 56, 16);
    		frame.getContentPane().add(lblNewLabel_3);
    		
    		//Affiche "X1 ="
    		JLabel lblNewLabel_4 = new JLabel("X1");
    		lblNewLabel_4.setBounds(36, 167, 56, 16);
    		frame.getContentPane().add(lblNewLabel_4);
    		//Affiche "X2 ="
    		JLabel lblNewLabel_5 = new JLabel("X2");
    		lblNewLabel_5.setBounds(36, 196, 56, 16);
    		frame.getContentPane().add(lblNewLabel_5);
    		
    		//Saisie A
    		textField = new JTextField();
    		textField.setBounds(98, 45, 116, 22);
    		frame.getContentPane().add(textField);
    		textField.setColumns(10);
    		//Saisie B
    		textField_1 = new JTextField();
    		textField_1.setBounds(98, 77, 116, 22);
    		frame.getContentPane().add(textField_1);
    		textField_1.setColumns(10);
    		//Saisie C
    		textField_2 = new JTextField();
    		textField_2.setBounds(98, 108, 116, 22);
    		frame.getContentPane().add(textField_2);
    		textField_2.setColumns(10);
    		//Affiche DELTA
    		textField_3 = new JTextField();
    		textField_3.setBounds(98, 134, 116, 22);
    		frame.getContentPane().add(textField_3);
    		textField_3.setColumns(10);
    		// X1
    		textField_4 = new JTextField();
    		textField_4.setBounds(98, 164, 116, 22);
    		frame.getContentPane().add(textField_4);
    		textField_4.setColumns(10);
    		// X2
    		textField_5 = new JTextField();
    		textField_5.setBounds(98, 193, 116, 22);
    		frame.getContentPane().add(textField_5);
    		textField_5.setColumns(10);
    		
    		JButton btnNewButton = new JButton("Calcul");
    		btnNewButton.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    			double a = 1.0;
    			double b = 0.0;
    			double c = 0.0;
    		//	Scanner sc=new  Scanner(System.in);
    
    				double delta = (((b*b)-4*(a*c))/(2*a));
    				double X1=((-b+sqrt(delta)/2*a));
    				double X2=((-b-sqrt(delta)/2*a));
    				
    				textField_3.setText("" + delta);
    				textField_4.setText(""+ X1);
    				textField_5.setText(""+ X2);
    					
    			}
    			private double sqrt(Double delta) {
    				
    				return delta;
    			}
    
    		});
    		btnNewButton.setBounds(226, 108, 97, 25);
    		frame.getContentPane().add(btnNewButton);
    		
    
    	}
    }
    



    • Partager sur Facebook
    • Partager sur Twitter
      14 janvier 2019 à 14:05:56

      Bonjour,

      Un peu plus de détails sur ce qui ne fonctionne pas ?

      En l'état ton programme n'est pas fini, donc rien d'étonnant à ce que ca ne fonctionne pas.

      Genre tu ne cherches pas à récup les valeurs de a,b et c saisie quand tu cliques sur le bouton. Tu ne vérifies pas si delta est positif ou négatif ou nul pour ensuite calculer tes racines, ta méthode sqrt ne fait rien (et en plus il existe déjà une méthode dans Math qui calcul la racine d'un nombre).

      A coté de ça, tu as ton main dans ta classe fen qui fait appel au constructeur de ta propre classe. C'est... bizarre.

      De plus : 

      - Les classes prennent une majuscule à leur nom => Fen (et je suis pas contre un nom plus parlant). fen pour une variable, admettons, pour une classe, bof bof.

      - textField1-2-3-4-5.. Prend des noms plus parlant, genre txtFieldA, txtFieldB, txtFieldC, txtFieldDelta etc... c'est pas ouf mais c'est déjà mieux.

      - Delta = b² -4ac. C'est quand meme la base de pas se planter de formule...

      - double delta = (((b*b)-4*(a*c))/2*a)); => Du calme sur les parenthèses ^^ Des parenthèses pour s'y retrouver, c'est bien, mais trop, c'est le bordel

      -
      Edité par Tiffado 14 janvier 2019 à 14:11:53

      • Partager sur Facebook
      • Partager sur Twitter
        14 janvier 2019 à 14:13:38

        Bonjour,

        1/. Pour convertir un String en double, il y plusieurs façons dont la méthode valueOf() de l'objet Double.

        2/. Pour convertir un double en String, ta méthode n'est pas très propre. Utilise plutôt la méthode toString() de l'objet Double.

        3/. Regarde les méthodes de l'objet Math. Certaines dont sqrt() et pow() pourraient t'être utiles.

        4/. Pour récupérer le texte d'un JTextField tu peux utiliser la méthode getText().

        5/. Vérifies tes formules mathématiques!!!

        -
        Edité par @rtur 14 janvier 2019 à 14:15:08

        • Partager sur Facebook
        • Partager sur Twitter
          14 janvier 2019 à 17:19:46

          Merci pour vos réponses,

          pour les formules effectivement avec les copier/collé je n'avais pas remarqué l'erreur :)

          j'ai refait le code avec l'instruction toString() mais cela ne m'affiche rien:

          package Interface;

          import java.awt.EventQueue;

          import javax.swing.JFrame;

          import javax.swing.JPanel;

          import java.awt.BorderLayout;

          import javax.swing.JLabel;

          import javax.swing.JTextField;

          import javax.swing.JButton;

          import java.awt.Font;

          import java.awt.event.ActionListener;

          import java.awt.event.ActionEvent;

          public class Equation {

          private JFrame frame;

          private JTextField textFieldA;

          private JTextField textFieldB;

          private JTextField textFieldC;

          private JTextField textFieldDelta;

          private JTextField textFieldX1;

          private JTextField textFieldX2;

          /**

          * Launch the application.

          */

          public static void main(String[] args) {

          EventQueue.invokeLater(new Runnable() {

          public void run() {

          try {

          Equation window = new Equation();

          window.frame.setVisible(true);

          } catch (Exception e) {

          e.printStackTrace();

          }

          }

          });

          }

          /**

          * Create the application.

          */

          public Equation() {

          initialize();

          }

          /**

          * Initialize the contents of the frame.

          */

          private void initialize() {

          frame = new JFrame();

          frame.setBounds(100, 100, 850, 600);

          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

          JPanel panel = new JPanel();

          frame.getContentPane().add(panel, BorderLayout.CENTER);

          panel.setLayout(null);

          JLabel lblNewLabelA = new JLabel("Entrer la valeur de A :");

          lblNewLabelA.setBounds(24, 91, 134, 16);

          panel.add(lblNewLabelA);

          JLabel lblNewLabelB = new JLabel("Entrer la valeur de B :");

          lblNewLabelB.setBounds(24, 136, 134, 16);

          panel.add(lblNewLabelB);

          JLabel lblNewLabelC = new JLabel("Entrer la valeur de C :");

          lblNewLabelC.setBounds(24, 183, 134, 16);

          panel.add(lblNewLabelC);

          JLabel lblNewLabelDelta = new JLabel("Delta =");

          lblNewLabelDelta.setBounds(24, 229, 56, 16);

          panel.add(lblNewLabelDelta);

          JLabel lblNewLabelX1 = new JLabel("X1 =");

          lblNewLabelX1.setBounds(24, 258, 56, 16);

          panel.add(lblNewLabelX1);

          JLabel lblNewLabelX2 = new JLabel("X2 =");

          lblNewLabelX2.setBounds(24, 287, 56, 16);

          panel.add(lblNewLabelX2);

          textFieldA = new JTextField();

          textFieldA.setBounds(170, 88, 116, 22);

          panel.add(textFieldA);

          textFieldA.setColumns(10);

          textFieldB = new JTextField();

          textFieldB.setBounds(170, 133, 116, 22);

          panel.add(textFieldB);

          textFieldB.setColumns(10);

          textFieldC = new JTextField();

          textFieldC.setBounds(170, 180, 116, 22);

          panel.add(textFieldC);

          textFieldC.setColumns(10);

          textFieldDelta = new JTextField();

          textFieldDelta.setBounds(105, 226, 116, 22);

          panel.add(textFieldDelta);

          textFieldDelta.setColumns(10);

          textFieldX1 = new JTextField();

          textFieldX1.setBounds(105, 255, 116, 22);

          panel.add(textFieldX1);

          textFieldX1.setColumns(10);

          textFieldX2 = new JTextField();

          textFieldX2.setBounds(105, 284, 116, 22);

          panel.add(textFieldX2);

          textFieldX2.setColumns(10);

          JButton btnNewButton = new JButton("Calcul");

          btnNewButton.addActionListener(new ActionListener() {

          public void actionPerformed(ActionEvent arg0) {

          double b=0;

          double a=1;

          double c=0;

          double delta = b*b-4*a*c;

          if (delta>0) {

          double X1 = (-b-Math.sqrt(delta))/(2*a);

          double X2 = (-b+Math.sqrt(delta))/(2*a);

          Double d=toString(delta);

          Double x=toString(X1);

          Double y=toString(X2);

          textFieldDelta.setText("" + d);

          textFieldX1.setText(""+ x);

          textFieldX2.setText(""+ y);

          }

          }

          private Double toString(double delta) {

          return delta;

          }

          });

          btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 20));

          btnNewButton.setBounds(280, 229, 155, 36);

          panel.add(btnNewButton);

          }

          }

          • Partager sur Facebook
          • Partager sur Twitter
            14 janvier 2019 à 17:28:51

            Re bonjour

            Sans vouloir être méchant, il faudrait p'tet simplement revoir les bases.

            Voici 2-3 exemples de ce que voulait dire Artur

            Double d = 10.5;
            String s = d.toString();
            Double d2 = Double.valueOf(s);


            Si tu ne comprends pas trop ce qu'on te dit, n'hésite pas à demander des précisions ou bien de fouiller sur le net, car de manière évidente, que fait ta méthode :

            private Double toString(double delta) {
            return delta;
            }

            Si ce n'est rien ? (Et surtout pas retourner un String)

            -
            Edité par Tiffado 14 janvier 2019 à 17:30:55

            • Partager sur Facebook
            • Partager sur Twitter
              14 janvier 2019 à 17:46:49

              ok merci je vais piocher,

              pour la méthode elle c'est créé quand j'ai fait un clic droit sur l'erreur qui s"était affichée.

              • Partager sur Facebook
              • Partager sur Twitter

              Equation du second degré

              × 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