2017-10-23 3 views
-5

Ich bin ein Student, unser Lehrer sagte uns, eine statische Methode namens SOMME zu machen, um die Vektoren Summe zu zählen, (es heißt SOMME in dem Code) und er sagte, es sollte static sein, ich wusste nicht, wo das Problem ist, habe ich versucht, fast jeden möglichen Weg, um das zu lösen, aber keine Lösungen."Java" Ich kann den Code mit dieser statischen Methode nicht ausführen, aber ich muss es statisch machen

hier ist der Code:

import java.util.*; 
public class Vecteur {// 3D 

    public double x; 
    public double y; 
    public double z; 

    public Vecteur (double x,double y,double z) 
    { 

     this.x=x; 
     this.y=y; 
     this.z=z; 
    } 


    public void affichage() 
    { 
     System.out.println("("+x+","+y+","+z); 
    } 

    public double norme() 
    { 
     return Math.sqrt(x*x+y*y+z*z); 
    } 

    public static Vecteur somme(Vecteur v) // he told us to make it static nom matter what 
    { 
     Vecteur u=new Vecteur(0.0,0.0,0.0); 

     u.x=x+v.x; 
     u.y=y+v.y; 
     u.z=z+v.z; 

     return u; 
    } 

    public double produit(Vecteur v) 
    { 
     return x*v.x+y*v.y+z*v.z; 
    } 
} 
+1

Willkommen bei Stack-Überlauf! Bitte lesen Sie unsere [SO Fragen-Checkliste] (http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist), um Ihnen zu helfen, eine gute Frage zu stellen und somit eine gute Antwort zu erhalten. –

+0

* "Ich habe fast jeden möglichen Weg versucht, um das zu lösen, aber keine Lösungen" * Was ist * fast jeder mögliche Weg *? – Frakcool

+0

Und welchen Fehler bekommst du? –

Antwort

1

Wenn Sie es statisch zugreifen möchten werden Sie es wie folgt zu tun:

public static Vecteur somme(Vecteur v1, Vecteur v2) 
{ 
    Vecteur u = new Vecteur(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z); 
    return u; 
} 

Der einzige Weg, um es mit nur einem Parameter zu tun und ist wie dieser mit einer nicht-statischen Methode in der Lage, Ihre eigenen Werte zu verwenden:

public Vecteur somme(Vecteur other) 
{ 
    Vecteur u = new Vecteur(this.x + other.x, this.y + other.y, this.z + other.z); 
    return u; 
} 

Ich empfehle Sie, obwohl this heraus zu überprüfen. Ich habe beide auf Ihre Klasse unter:

public static Klasse Vecteur {// 3D

public double x; 
public double y; 
public double z; 

public Vecteur (double x,double y,double z) 
{ 

    this.x=x; 
    this.y=y; 
    this.z=z; 
} 


public void affichage() 
{ 
    System.out.println("("+x+","+y+","+z); 
} 

public double norme() 
{ 
    return Math.sqrt(x*x+y*y+z*z); 
} 

public static Vecteur somme(Vecteur v1, Vecteur v2) // he told us to make it static nom matter what 
{ 
    Vecteur u = new Vecteur(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z); 
    return u; 
} 

public Vecteur somme(Vecteur other) 
{ 
    Vecteur u = new Vecteur(this.x + other.x, this.y + other.y, this.z + other.z); 
    return u; 
} 

public double produit(Vecteur v) 
{ 
    return x*v.x+y*v.y+z*v.z; 
} 

}

+0

Ich empfehle Ihnen auch zu lesen, wie Sie hier akzeptieren und beantworten: https://stackoverflow.com/help/someone-answers – raudelravelo91

0

Warum der Code nicht

Sie arbeiten versuchen, eine Instanz-Variable von einer statischen Methode zuzugreifen, die nicht funktionieren.

Wie man dieses Problem beheben

Es sind 2 Möglichkeiten, dies zu tun:

  • dem Verfahren sowohl vertors als Parameter nehmen, und erhalten Sie alle Werte aus den Parametern
  • Machen Sie das Verfahren nicht -static es zu ermöglichen Instanzmethoden
Verwandte Themen