[Java] - Help Méchament Needed en post #4 - (projet CO inside) :/

- Help Méchament Needed en post #4 - (projet CO inside) :/ [Java] - Java - Programmation

Marsh Posté le 28-01-2003 à 16:17:55    

salut
 
voilà, j'ai un projet à faire, assez simple, il consiste à afficher (et calculer) les trajectoires de planetes dans l'espace...  
 
faire une GUI pour saisir les planetes, masses, position, vitesse, etc...
 
on a les équations, et aussi les classes d'affichages de points (Point2D.Double en arguement)
 
bref, voilà ce que j'ai tapé :
 
la classe calcul prend en argument un vector d'objet de type planete (attributs : _nom _masse _vitesse etc...)
 
 
 
mais quand je tente de copier le contenu d'un élément du vecteur dans un objet de type Planete (donc du meme type) voilà ce qu'il me dit :
 

"Calcul.java" : Erreur No. 354 : types incompatibles ; trouvé : java.lang.Object, requis : mvt_planete.Planete en ligne 43, colonne 63


 
 
Voilà ma classe calcul...
 
Qu'en pensez vous ?
 
 
 
 

package mvt_planete;
 
import java.util.Vector;
import java.awt.event.*;
import java.awt.geom.Point2D;
import java.lang.*;
import java.lang.String;
import java.awt.*;
import javax.swing.*;
 
 
 
/*
*/
 
public class Calcul{
 //Attributs
 
Planete current_planete;
Planete other_planete;
Vector current_traj;
Vector all_traj;
 
 //Methodes
 // ->Constructeur
      public Calcul(Vector all_planetes, int iter, int Np, double Dt) {
 
      int i,j,t;
      double G,A,B,C;
      G = 6.67259E-11;
 
      current_planete = new Planete();
      other_planete = new Planete();
 
      all_traj = new Vector(Np);
      current_traj = new Vector();
 
 
      for (t=0;t<iter;t++)
                {
                for (j=0;j<Np;i++)
                      {
                      current_planete = all_planetes.elementAt(j);
 
 
                      //Calcul des COEFFICIENTS A, B et C
                      for (i=0;i<Np;i++)
                            {
                            if (j!=i)
                                {
                                other_planete = all_planetes.elementAt(i);
                                A = A + G*other_planete._masse / Math.pow(Math.sqrt( Math.pow((current_planete._position.x-other_planete._position.x),2) + Math.pow((current_planete._position.y-other_planete._position.y),2) ),3);
                                B = B + G*other_planete._masse*other_planete._vitesse.x / Math.pow(Math.sqrt( Math.pow((current_planete._position.x-other_planete._position.x),2) + Math.pow((current_planete._position.y-other_planete._position.y),2) ),3);
                                C = C + G*other_planete._masse*other_planete._vitesse.y / Math.pow(Math.sqrt( Math.pow((current_planete._position.x-other_planete._position.x),2) + Math.pow((current_planete._position.y-other_planete._position.y),2) ),3);
                                }
                            }
                      //Calcul de Xj(t + Dt)
                      current_planete._position.x = current_planete._position.x + Dt*(current_planete._vitesse.x);
 
                      //Calcul de Yj(t + Dt)
                      current_planete._position.y = current_planete._position.y + Dt*(current_planete._vitesse.y);
 
                      //Calcul de Vxj(t + Dt)
                      current_planete._vitesse.x = current_planete._vitesse.x - A*Dt*(current_planete._vitesse.x) + B;
 
                      //Calcul de Vyj(t + Dt)
                      current_planete._vitesse.y = current_planete._vitesse.y - A*Dt*(current_planete._vitesse.y) + C;
                      }
 
                current_traj = all_traj.elementAt(j);
                current_traj.addElement(new Point2D.Double(current_planete._position.x, current_planete._position.y));
                all_traj.setElementAt(current_traj, j);
 
                }
 
 
       }
 
}


Message édité par zytrahus5 le 28-01-2003 à 18:15:16

---------------
http://www.zytratech.com
Reply

Marsh Posté le 28-01-2003 à 16:17:55   

Reply

Marsh Posté le 28-01-2003 à 16:38:44    

Il faut caster ... elementAt() te renvoie un Object, pas un Planete.
 

Code :
  1. current_planete = (Planete) all_planetes.elementAt(j);

Reply

Marsh Posté le 28-01-2003 à 17:05:26    

Dsls a écrit :

Il faut caster ... elementAt() te renvoie un Object, pas un Planete.
 

Code :
  1. current_planete = (Planete) all_planetes.elementAt(j);



merci beaucoup :jap: sur le dernier, il fallait le caster en Vector, parce que c'est un vecteur de vecteur... Mais c'est bon là :)
 
 
 
Plus basiquement, j'ai un autre problème :/
 
J'ai créé une classe ajout_planete qui me permet de saisir des données dans des champs et ensuite de les renvoyer à la classe qui l'a appelé.
 
 
Là elle est encore toute simple, je n'ai pas afficher encore tous les champs, mais déjà la elle ne veut pas afficher un pauvre texte avec system.println :/  
 
Je n'ai pas encore ajouté le fait qu'elle retourne un objet de type planete... enfin bref :
 
 
voici cette classe :
 

package mvt_planete;
 
import java.awt.geom.Point2D;
import java.util.*;
import javax.swing.*;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;
import java.lang.String;
import javax.swing.JComponent;
 
/**
 * Titre :        Mouvement Planete
 * Description :
 * Copyright :    Copyright (c) 2002
 * Société :
 * @author
 * @version 1.0
 */
 
public class ajout_planete extends JFrame implements ActionListener{
 
    JTextField nom;
    JTextField masse;
    JButton valid;
    JLabel lab_masse;
 
  public ajout_planete() {
    super ("Ajout d'une planète" );
 
    JPanel pane = new JPanel();
    //Ajout du champ nom
    int i=1;
    String note2 = "Planete"+i;
    JTextField nom = new JTextField(note2,10);
    //Ajout du champ masse
    JLabel lab_masse = new JLabel("masse" );
    JTextField masse = new JTextField(10);
    //ajout du bouton de validation
    String note = "Valider";
    JButton valid = new JButton(note);
    valid.addActionListener (this);
    //mise en page
 
    pane.add("",nom);
    pane.add("",lab_masse);
    pane.add("",masse);
    pane.add("",valid);
    this.setContentPane(pane);
    }
 
  public void actionPerformed (ActionEvent evt ) {
    Object src=evt.getSource();
    System.out.println(" "+src.hashCode());
 
    if (src==valid)
    {
System.out.println("test " );
 
 
    WindowListener l = new WindowAdapter()
     { public void windowclosing() { System.exit(0);} };
 
        //frame.addWindowListener(l);
        //frame.pack();
        //frame.setVisible(true);
      }
 
    }
 
}


---------------
http://www.zytratech.com
Reply

Marsh Posté le 28-01-2003 à 17:29:19    

il ne rentre jamais dans ce test (dans ma classe ajout_planete)
 

if (src==valid)
   {
System.out.println("test " );
 


 
pourtant tout semble bien déclaré... et il ne me sort pas d'erreur :/


---------------
http://www.zytratech.com
Reply

Marsh Posté le 28-01-2003 à 18:13:48    

Bon, il me semble avoir réglé mes problèmes, mais un autre a apparu...
 
 
j'ai une classe graphique... ajout_planete elle possede des champs, et je sais comment convertir les string en double, mais mon probleme réside dans le fait que je dois renvoyer un objet de type Planete au moment ou je clique sur le bouton valider mais je sais pas comment faire, parce que ma méthode actionperformed ne veut pas que je renvois autre chose que void...
 
 
donc j'ai créé une méthode renvoi_planete mais ça marche pas... je crois que ça marche pas parce que je l'appelle depuis la methode actionperformed, mais je suis pas sur...
 
 
pouvez vous me dire comment renvoyer un objet de type Planete à la classe qui a appelé celle ci :
 

package mvt_planete;
 
import java.util.Vector;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.Point2D;
 
/*
*/
 
/**
 * Titre :        Mouvement Planete
 * Description :
 * Copyright :    Copyright (c) 2002
 * Société :
 * @author
 * @version 1.0
 */
 
public class ajout_planete extends JFrame implements ActionListener {
JButton valid;
Planete new_planete;
 
 public ajout_planete() {
 
      Planete new_planete = new Planete();
 
      JPanel pane = new JPanel();
      valid = new JButton("Valider" );
      valid.addActionListener (this);
 
      pane.add("",valid);
      this.setContentPane(pane);
 
      }
 
 // Gestion des réponses aux évènements
 public void actionPerformed (ActionEvent evt )
 { Object src=evt.getSource(); // source des évènements (boutons)
   //System.out.println(" "+src.hashCode()); // marquage source évènement
 
 
 
 
 
   if (src==valid) // LANCE LA FENETRE D AJOUT DE PLANETE...
   {
     WindowListener l = new WindowAdapter()
     { public void windowclosing() { System.exit(0);} };
       }
     System.out.println("FUCK " );
     renvoi_planete();
 
 
 
 }
public Planete renvoi_planete () {return (new_planete);}
 
 
 
}


 
merci pour le coup de main, parce que là je bloque vraiment :/


---------------
http://www.zytratech.com
Reply

Marsh Posté le 28-01-2003 à 18:38:02    

zytrahus5 a écrit :

Bon, il me semble avoir réglé mes problèmes, mais un autre a apparu...
 
 
j'ai une classe graphique... ajout_planete elle possede des champs, et je sais comment convertir les string en double, mais mon probleme réside dans le fait que je dois renvoyer un objet de type Planete au moment ou je clique sur le bouton valider mais je sais pas comment faire, parce que ma méthode actionperformed ne veut pas que je renvois autre chose que void...
 
 
donc j'ai créé une méthode renvoi_planete mais ça marche pas... je crois que ça marche pas parce que je l'appelle depuis la methode actionperformed, mais je suis pas sur...
 
 
pouvez vous me dire comment renvoyer un objet de type Planete à la classe qui a appelé celle ci :
 

package mvt_planete;
 
import java.util.Vector;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.Point2D;
 
/*
*/
 
/**
 * Titre :        Mouvement Planete
 * Description :
 * Copyright :    Copyright (c) 2002
 * Société :
 * @author
 * @version 1.0
 */
 
public class ajout_planete extends JFrame implements ActionListener {
JButton valid;
Planete new_planete;
 
 public ajout_planete() {
 
      Planete new_planete = new Planete();
 
      JPanel pane = new JPanel();
      valid = new JButton("Valider" );
      valid.addActionListener (this);
 
      pane.add("",valid);
      this.setContentPane(pane);
 
      }
 
 // Gestion des réponses aux évènements
 public void actionPerformed (ActionEvent evt )
 { Object src=evt.getSource(); // source des évènements (boutons)
   //System.out.println(" "+src.hashCode()); // marquage source évènement
 
 
 
 
 
   if (src==valid) // LANCE LA FENETRE D AJOUT DE PLANETE...
   {
     WindowListener l = new WindowAdapter()
     { public void windowclosing() { System.exit(0);} };
       }
     System.out.println("FUCK " );
     renvoi_planete();
 
 
 
 }
public Planete renvoi_planete () {return (new_planete);}
 
 
 
}


 
merci pour le coup de main, parce que là je bloque vraiment :/

[:screamfr] s'il vous plait il ne me reste vraiment plus beaucoup de temps avant de devoir le rendre... :hello:


---------------
http://www.zytratech.com
Reply

Marsh Posté le 28-01-2003 à 18:50:41    

comment on fait pour renvoyer un double depuis la méthode d'une classe qui renvoit déjà void (non modifiable) ?


---------------
http://www.zytratech.com
Reply

Marsh Posté le 28-01-2003 à 19:09:14    

zytrahus5 a écrit :

comment on fait pour renvoyer un double depuis la méthode d'une classe qui renvoit déjà void (non modifiable) ?


 
bin si la méthode renvoit rien elle peut pas renvoyer un double hein!
 
 [:rofl]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 28-01-2003 à 19:49:49    

DarkLord a écrit :


 
bin si la méthode renvoit rien elle peut pas renvoyer un double hein!
 
 [:rofl]  

c'est pour ça que je demande, comment faire pour renvoyer une variable par une autre méthode...


Message édité par zytrahus5 le 28-01-2003 à 19:50:30

---------------
http://www.zytratech.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed