2016-04-16 11 views
-3

私は静的キーワードの使用方法を示す簡単なプログラムを書きました。また、変数の二乗を計算するメソッドをタイプし、メインクラスの静的変数の値を初期化しました。静的変数の値をメソッドに渡すにはどうすればよいですか?

class staticdemo{ 
public static int stvar; 

void square(int stvar){ 
    System.out.println("" + stvar*stvar); 
} 

} 
public class statictest { 
public static void main(String args[]){ 
    staticdemo.stvar = 10; 
int s = staticdemo.stvar; 
    square(s); //HERE IS WHERE I GET THE ERROR! 
} 
} 

私が手に正確なエラーは、「メソッド広場(int)がタイプに定義されていませんstatictest」さ

は、どのように私は、静的変数とメソッドを実行することができますか?

+0

__JavaScript__ ??? – Rayon

+0

質問に正しいコードタグを付けると、いくつかの回答が得られます。これはJavascriptではありません。 – Dominofoe

+0

'square'ではなく' staticdemo.square'でなければなりません。私は低品質の質問としてこれを閉じて投票します。 – Everv0id

答えて

0

メソッドに静的フィールド(変数ではありません)を渡しているという問題ではありません。インスタンスなしでインスタンスメソッドを呼び出そうとしています。

次のいずれかの

  1. あなたがmain、または

  2. からそれを呼び出すことができるようにそれを呼び出すためにmainでインスタンスを作成し、同様squarestaticを行います

    new staticdemo().square(staticdemo.stvar); 
    

私も強くおっしゃっています静的フィールド(stvar)と関数パラメータ(stvarsquare)に同じ名前を使用しないでください。混乱とトラブルを求めているだけです。

また、独自のテストコードでも、他の人にヘルプを依頼する際には、標準のJava命名規則に従うことをお勧めします。

ので、おそらく:

class StaticDemo { 
    public static int stvar; 

    public static void square(int s) { 
    //  ^^^^^^    ^
     System.out.println("" + s * s); 
    //      ^^
    } 
} 

public class StaticTest { 
    public static void main(String args[]) { 
     StaticDemo.square(StaticDemo.stvar); 
    // ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^ 
    } 
} 

または交互:

class StaticDemo { 
    public static int stvar; 

    public void square(int s) { 
    //     ^
     System.out.println("" + s * s); 
    //      ^^
    } 
} 

public class StaticTest { 
    public static void main(String args[]) { 
     new StaticDemo().square(StaticDemo.stvar); 
    // ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^ 
    } 
} 
0

あなたのメソッドも静的である必要があります

0

この方法でなければならないあなたは、静的コンテキスト

からそれを呼び出したい場合は

void square(int stvar)静的別のよりエレガントでOOPの方法は、あなたが直接、非静的メソッドを呼び出すことはできませんつまり

public static void main(String args[]){ 
    staticdemo.stvar = 10; 
    int s = staticdemo.stvar; 
    staticdemo foo = new staticdemo(); 

    foo.square(s); //HERE will work fine! 
} 
0

彼らにプライベート

を宣言することによって、そのメンバーをカプセル化し、クラスのオブジェクトを宣言するだろう。 staticdemoクラス用のオブジェクトを作成する必要があります。オブジェクトを使用してメソッドを呼び出すことができます。 メインメソッドの内側に を入力します。staticdemo st = new staticdemo(); st.square(s);