2017-02-14 12 views
0

私は2つの別々のクラスを持っています。実際には下の最初のビットのような正方形の領域の計算を行い、結果を表示するのは1つです。 「computeSquareArea」というシンボルが見つからないというエラーが表示されます。なぜこれをしてクラス間で転送しないのですか?異なるクラスの変数を使用する

public double computeSquareArea(double length) 
{ 
    return length * length; 
} 


double sqArea = computeSquareArea(length); 
System.out.println("Area of the square is " + sqArea); 
+1

私の推測するオブジェクトで関数を呼び出します。 – vk3105

+0

あなたのクラス全体を見せてください。 – msagala25

答えて

1

静的メソッドはオブジェクトのインスタンスに属し、静的メソッドはクラスに属します。

コードでは、computeSquareArea()は非静的メソッドです。つまり、呼び出すには、そのクラスのインスタンス上で呼び出す必要があります。

インスタンスを最初に要求せずにメソッドを呼び出せるようにするには、静的メソッド。メソッドがstaticにするためには、私が見ることができるようにあなたがこのhere.

+0

同じ問題を持つ静的なimを追加した後でも。最初のクラスで使用するには、他のクラスのオブジェクトを構築する必要がありますか? –

+0

'computeSquareArea()'がFooというクラスにあるとしましょう。別のクラスからメソッドを呼び出すには、 'Foo.computeSquareArea()'を呼び出す必要があります。これがうまくいかない場合は、実際のコードを投稿してください。 – coolioasjulio

+0

問題は静的ではなく、静的ではありません。メソッドを適切に呼び出す必要があります。静的な場合、適切な方法は 'className.methodName()'です。静的でない場合、適切な方法は 'instanceRef.methodName()'です。単純に 'methodName()'を呼び出す場合、メソッドは呼び出しが発生したクラスと同じクラスで定義されていなければなりません。 –

1

の詳細を読むことができpublic double computeSquareDistance()

public static double computeSquareDistance()に変更して、あなたの方法computeSquareArea(double length)は静的ではありません。だから私はIntantiateあなたのメソッドを持っているクラスcomputeSquareArea(double length)する必要があると思います。例のように、あなたのクラスの名前はSomeClassと仮定できます。

SomeClass someClass = new SomeClass(); 
double sqArea = someClass.computeSquareArea(length); // This would be the method of your newly created Instance of SomeClass 
System.out.println("Area of the square is " + sqArea); 
関連する問題