2012-04-18 19 views
0

参照することができない。ここで、エラーメッセージ非静的メソッド...ここ静的文脈から

non static method hero(double,double,double) cannot be reference from a static context

がクラスメソッドです。ここで

class MyMath { 
    double hero(double n1, double n2, double n3) 
    { 
    double n4; 
    double n5; 
    n4 = (n1 + n2 + n3)/2; 
    n5 = Math.sqrt((n4 * (n4 - n1) * (n4 - n2) * (n4 - n3))); 
    return n5; 
    } 
} 

は、あなたのヒーローの方法は、あなたの方法heroは、クラス名を使用して呼ばれるようにしたい場合は、それstatic作る

static double hero(double n1, double n2, double n3){...} 
+4

[Java - 非静的フィールドリストへの静的参照の作成](http://stackoverflow.com/questions/10200740/java-making-a-static-reference-to-the-non-静的フィールドリスト) – Perception

答えて

1

です。それ以外の場合は、単にMyMathオブジェクトを作成し、その関数を呼び出します。あなたはそれがstaticメソッドであるかのようMyMath.heroにアクセスしようとするため

MyMath m = new MyMath(); 
area_of_triangle = m.hero(length_of_a,length_of_b,length_of_c); //No need to typecast too 
1

として置くべきメインプログラム

double length_of_a; 
double length_of_b; 
double length_of_c; 
double area_of_triangle; 

area_of_triangle = (double) MyMath.hero(length_of_a,length_of_b,length_of_c); 
0

あなたはそのエラーを取得します。これを修正するには、heroメソッドをstaticと宣言するか、最初にタイプMyMathのオブジェクトを作成し、そのオブジェクトからメソッドを呼び出す必要があります。

1

あなたの方法heroは静的ではありません。つまり、クラスMyMathのインスタンスでのみ呼び出すことができます。

area_of_triangle = (double) MyMath.hero(length_of_a,length_of_b,length_of_c); 

hero方法staticを作る、またはMyMathのインスタンスを作成し、その上でメソッドを呼び出す次のいずれか:あなたはそれがここに静的メソッドであるかのようにそれを呼び出すようにしようとしています。

// Solution 1: Make hero static 
class MyMath { 
    static double hero(double n1, double n2, double n3) 
     // ... 

// Solution 2: Call hero on an instance of MyMath 
MyMath m = new MyMath(); 

area_of_triangle = m.hero(length_of_a,length_of_b,length_of_c); 

注:doubleの方法の結果をキャストする必要はなく、この方法は、既にdouble返します。

1

hero()メソッドが静的に設定されていません。あなたは、どちらかの静的メソッドので、同じようhero()を行うことができます。

static double hero(double n1, double n2, double n3) 
{ 
    ... 

か、のようなMyMathの新しいインスタンスを作成することができます。callその後、

MyMath newMath = new MyMath(); 

と:

newMyMath.hero(length_of_a,length_of_b,length_of_c); 
+0

ありがとうKarthik。 V – Hrfpkj

0

mainメソッドを静的メソッドでは静的ではないobjの参照を持つことはできません。 したがって、hero()メソッドを静的にするか、または非静的メソッドから参照するかのいずれかを行う必要があります。

関連する問題