erreur dans programme java sur des vecteurs 3D
Bonjour,
Premier fichier nommé Point3D.java
Code:
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
| public class Point3D
{
private double x,y,z ;
public Point3D (double x, double y, double z)
{
this.x=x;
this.y=y;
this.z = z;
}
public void deplace(double dx, double dy, double dz)
{
x+=dx;y+=dy;z+=dz;
}
public void affiche()
{
System.out.println("coordonnées = " +x+" "+y+" "+z);
}
public double GetX()
{
return x;
}
public double GetY()
{
return y;
}
public double GetZ()
{
return z;
}
public void SetX(double x)
{ this.x = x;}
public void SetY(double Y)
{ this.y = y;}
public void SetZ(double z)
{ this.z = z;}
} |
Deuxième fichier nommé Vecteur3D.java
Code:
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
| public class Vecteur3D{
private Point3D origine, extremite;
private double composante_1, composante_2, composante_3;
private static Vecteur3D sommeAB;
Vecteur3D(double composante_1, double composante_2, double composante_3){
origine.SetX(0);
origine.SetY(0);
origine.SetZ(0);
this.composante_1=composante_1;
this.composante_2=composante_2;
this.composante_3=composante_3;
extremite.SetX(composante_1);
extremite.SetY(composante_2);
extremite.SetZ(composante_3);
}
public void affiche(){
System.out.println("Les coordonnées sont : <"+composante_1+", "+composante_2+", "+composante_3+" >");
}
public double norme(){
return Math.sqrt((extremite.GetX()-origine.GetX())*(extremite.GetX()-origine.GetX())+(extremite.GetY()-origine.GetY())*(extremite.GetY()-origine.GetY())+(extremite.GetZ()-origine.GetZ())*(extremite.GetZ()-origine.GetZ()));
}
public static Vecteur3D sommeVecteur3D(Vecteur3D A, Vecteur3D B){
sommeAB = new Vecteur3D(A.GetComposante_1()+B.GetComposante_1(), A.GetComposante_2()+B.GetComposante_2(), A.GetComposante_3()+B.GetComposante_3() );
return sommeAB;
}
public double produitScalaire(Point3D origine1, Point3D extremite1, Point3D origine2, Point3D extremite2){
double produit;
produit = ((extremite1.GetX()-origine1.GetX())*(extremite2.GetX()-origine2.GetX())+(extremite1.GetY()-origine1.GetY())*(extremite2.GetY()-origine2.GetY())+(extremite1.GetZ()-origine1.GetZ())*(extremite2.GetZ()-origine2.GetZ()));
return produit;}
public void SetOrigine(Point3D origine ){
this.origine = origine;}
public void SetExtremite(Point3D extremite){
this.extremite = extremite;}
public Point3D GetOrigine(){
return origine;}
public Point3D GetExtremite(){
return extremite;}
public void SetComposante_1(double composante_1){
this.composante_1 = composante_1;}
public void SetComposante_2(double composante_2){
this.composante_2 = composante_2;}
public void SetComposante_3(double composante_3){
this.composante_3 = composante_3;}
public double GetComposante_1(){
return composante_1;}
public double GetComposante_2(){
return composante_2;}
public double GetComposante_3(){
return composante_3;}
} |
Troisième fichier nommé Test2.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class Test2{
public static void main(String [] args){
Vecteur3D A, B;
A = new Vecteur3D(2.0, 3.0, 4.0);
B = new Vecteur3D(5.0, 6.0, 7.0);
A.affiche();
B.affiche();
System.out.println("Produit Scalaire = "+produitScalaire(A.GetOrigine(), A.GetExtremite(), B.GetOrigine(), B.GetExtremite()));
System.out.println("Norme de A = "+A.norme());
System.out.println("Norme de B = "+B.norme());
}
} |
Une erreur s'affiche au niveau de la ligne en rouge dans le dernier fichier.
Si je la retire, j'ai une erreur :
Exception thread main java.lang.NullPointerException
at Vecteur3D.<init><Vecteur3D.java : 8>
at Test2.main<Test2.java5>
Impossible de régler le problème. J'ai essayé d'enlever toutes les lignes de mon fichier Test2.java et l'erreur viendrait en fait de quand je déclare mes deux vecteurs A et B dans main. Pourtant mon constructeur a l'air juste dans Vecteur3D.
Merci pour votre aide
quand je ne retire pas la ligne erreur
Quand je ne retire pas la ligne, mon erreur est :
Test2.java:9: cannot find symbol
symbol : method produitScalaire(Point3D,Point3D,Point3D,Point3D)
location : class Test2
la ligne en question avec ^ sous les parenthèses de B.GetExtremite()
J'ai rejouté ces lignes pour initialiser mais 2 erreurs lors de la compilation de Vecteur3D.java :
<identifier> expected
et ^ sous le = de chaque ligne ajoutée
Code:
1 2
| origine = new Point3D(0., 0., 0.);
extremite = new Point3D(0., 0., 0.) |