Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de Getter Setter

Débutant en Java

    22 octobre 2008 à 23:55:46

    Bonjour!

    Je suis confronté à un petit problème que je n'arrive pas à résoudre.

    Pour remettre les choses dans leur contexte :
    - j'ai crée un classe Vector3d dans un fichier Vector3d.java qui me permet d'effectuer toutes les opérations traditionnelles avec des vecteurs en 3 dimensions. ce fichier est débuggé et fonctionne correctement.
    - a présent je cherche à créer un classe Particle3d qui utilisera quelques méthodes issues de Vector3d

    Néanmoins j'ai des soucis. Voilà mon code, et en gras ce qui cloche :

    public class Particle3d {
    
        //Internal data members 
        double mass;
        double charge;
       
        //position and velocity are vectors as 3d
        Vector3d position = new Vector3d();
        Vector3d velocity = new Vector3d();
    
        // Getters required for JavaBeans
        public Vector3d getPosition(){ return position; }
        public Vector3d getVelocity(){ return velocity; }
        public double getMass()    { return mass; }
        public double getCharge()  { return charge; }
    
        // Setters required for JavaBeans
        public void setPosition(Vector3d p){ position = p; }
        public void setVelocity(Vector3d v){ velocity = v; }
        public void setMass(double m)    { mass = m; }
        public void setCharge(double c)  { charge = c; }
    
        // Constructors
        public Particle3d(double m,double c, Vector3d p, Vector3d v){
    	setMass(m);
    	setCharge(c);
    	setPosition(p);
    	setVelocity(v);
        }
    <gras>    // Default constructor sets all to "not a number" as uninitialised
        public Particle3d(){
            setMass(Double.NaN); 
            setCharge(Double.NaN);
            setPosition(Vector3d (Double.NaN,Double.NaN,Double.NaN) );
            setVelocity(Double.NaN,Double.NaN,Double.NaN);</gras>
        }
    
        // For using with Sytem.out.println
        public String toString()
        {
    	return "{x= " + position + ", v=" + velocity + ", m=" + mass + ", q=" + charge + "}";
        }
    


    J'ai des erreurs à la compilation concernant le Default Constructor, qui est sensé initialiser le vecteur position et velocity à (0,0,0) :

    Particle3d.java:34: cannot find symbol
    symbol  : method Vector3d(double,double,double)
    location: class Particle3d
            setPosition(Vector3d(Double.NaN,Double.NaN,Double.NaN) );
                        ^
    Particle3d.java:35: setVelocity(Vector3d) in Particle3d cannot be applied to (double,double,double)
            setVelocity(Double.NaN,Double.NaN,Double.NaN);
            ^
    2 errors


    Je ne comprends pas comment je suis sensé m'y prendre.


    Voilà un aperçu de mon fichier Vector3d.java

    public class Vector3d {
    
        // The internal variables
    	double x;
    	double y;
    	double z;
    
        // Default constructor
        public Vector3d ()     
        {
    	set(0,0,0);
        }
    
        public Vector3d (Vector3d copyme) 
        {
    	set(copyme.x,copyme.y,copyme.z);
        }
    
        // Explicit x,y,z constructor
        public Vector3d (double x2,double y2, double z2) 
        {
    	set(x2,y2,z2);
        }
    
        /////////////////////////////
        // other methods/functions
        /////////////////////////////
    
        // Convenience set method
        public void set (double x2,double y2, double z2) 
        {
    	setX(x2);
    	setY(y2);
    	setZ(z2);
        }
    
        //optional setters provide the internal variables
        public void setX(double x2) { x=x2; }
        public void setY(double y2) { y=y2; }
        public void setZ(double z2) { z=z2; }
        
        //optional getters provide access to internal variables
        public double getX() { return x;}
        public double getY() { return y;}
        public double getZ() { return z;}
            
        // Turn in to a string.
        public String toString()
        {
    	return "("+x+","+y+","+z+")";
        }
        
    // [..]
    
    };
    



    Je comprends le message d'erreur, mais je n'arrive pas à le corriger...

    Pouvez vous m'aider?

    • Partager sur Facebook
    • Partager sur Twitter
      23 octobre 2008 à 0:32:06

      Salut,

      essaie avec:
      setPosition(new Vector3d (Double.NaN,Double.NaN,Double.NaN));
      setVelocity(new Vector3d (Double.NaN,Double.NaN,Double.NaN));
      
      • Partager sur Facebook
      • Partager sur Twitter

      Problème de Getter Setter

      × 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