2016-03-27 25 views
0

クラス内に3つの変数を宣言し、これらの変数を他の値に割り当てる関数を作成し、距離を計算する別の関数を作成する必要があります。新しい値は(X/Y/Z)到達不能であり、私の変更常にゼロ関数内の変数の値を変更してスクープ外で使用する

class Point3D 
{ 
    public double x, y, z, ChangedX = 0, ChangedY = 0, ChangedZ = 0; 

    public void MoveTo(double NewX, double NewY, double NewZ) 
    { 

     x = NewX; 
     NewX = ChangedX; 
     y = NewY; 
     NewY = ChangedY; 
     z = NewZ; 
     NewZ = ChangedZ; 

    } 

    public double DistanceTo() 
    { 
     double DeltaX = Math.Pow((ChangedX - x), 2); 
     double DeltaY = Math.Pow((ChangedY - y), 2); 
     double DeltaZ = Math.Pow((ChangedZ - z), 2); 

     return Math.Sqrt(DeltaX + DeltaY + DeltaZ); 

    } 

ている。また、私はOOPを勉強し始めていない長いしばらく前 てきたあなたがお勧めのコースのいずれかのリソースがありますことを助けて?

+0

あなたの投稿コードでは、ChangedX/Y/Z変数を0に初期化した後に変更するものは何もありません。クラスの外から、他のコードで設定しますか? –

+0

ChangedX/Y/ZをNewX/Y/Zに割り当てる目的は何ですか?参照によって呼び出されていないので、これらの値はMoveTo()スコープが終了すると失われます。 – Guclu

+0

変数に到達できない場合は、クラスのインスタンスが複数あることを意味します。クラス内の変数を共有するには、クラスの同じインスタンスを使用するか、変数を静的にして、クラスのすべてのインスタンスで常に同じにする必要があります。 – jdweng

答えて

1

私が正しくあなたのコードの意図を理解している場合、それは私があなたのケースではどうなるのかです:

internal class Point3D 
{ 
    public double x = 0, y = 0, z = 0, PreviousX, PreviousY, PreviousZ; 

    public void MoveTo(double NewX, double NewY, double NewZ) 
    { 

     PreviousX = x; // remember previous value to use in delta calculation 
     x = NewX; 

     PreviousY = y; 
     y = NewY; 

     PreviousZ = z; 
     z = NewZ; 

    } 

    public double DistanceTo() 
    { 
     double DeltaX = Math.Pow((x - PreviousX), 2); 
     double DeltaY = Math.Pow((y - PreviousY), 2); 
     double DeltaZ = Math.Pow((z - PreviousZ), 2); 

     return Math.Sqrt(DeltaX + DeltaY + DeltaZ); 

    } 
} 

コースの勧告については、あなたはそれが最初にいくつかのビデオコースを見るために、常に良いことだ起動したときたとえば、https://www.pluralsight.com/courses/object-oriented-programming-fundamentals-csharp(このコースは自分のサイトでご覧になれます。またはウェブを検索できます)。

+0

これはまさに私が欲しかったものです。どうもありがとうございます –

関連する問題