2011-01-05 12 views
1

私は静的キーワードの使用で使用するためにjavaで非常に単純なプログラムを書いています。しかし、私は0として出力を得ています。私はその理由を見つけることができません。私は初心者です誰.Can javaの私のコードは次の通りです...このような問題が発生した理由も説明ください、解決策を提案してください:静的キーワードの使用

public class Cube{ 

    static int length; 
    static int breadth; 
    static int height; 

    public static int volume(final int i, final int j, final int k){ 
     return length * breadth * height; 
    } 

    public static void main(final String args[]){ 
     System.out 
      .println("volume of the cube is : " + Cube.volume(10, 20, 30)); 
    } 
} 
+1

「静的」キーワードがないと試したことがあります。同じ結果が得られるので、 'static'キーワードとは関係ありません。 – Raedwald

+2

Eclipseのようなまともなエディタを使うと、i、j、kで何もできなかったことを警告するので、これを解決するのに役立ちました。 –

+0

実際には、私はあなたが設定の方法を変えない限り、使用されていないメソッドのパラメータについて警告するでしょうか。 – Riggy

答えて

6

intフィールド、staticかどうかは、0として初期化されています。

オペランド(i * j * k)を掛けるか、静的フィールドintに割り当てる必要があります。これにあなたの方法を変更する

+0

ありがとうeljenso ....私は関数でこのような問題を考えたことはなかった。もう一度、私はそのような愚かな間違いをしないように注意します。 – vidhya

5

public static int volume(final int i, final int j, final int k){ 
    return i*j*k; 
} 

はあなたが望んでいた価値提供します。

さらに、@ eljensoの答えを読んでください。あなたはおそらく望ん

はこれです:

public static int volume(final int i, final int j, final int k){ 
    this.length = i; 
    this.breadth = j; 
    this.height = k; 

    return length * breadth * height; 
} 

あなたはi, j, kに渡され10, 20, 30値ので、問題が発生していますが、length, breadth, heightに割り当てませんでした。

そして、実際にはこの場合はstaticは必要ありません。これはあなたのクラスのためのより良いデザインのようになります。

class Cube{ 

    int length; 
    int breadth; 
    int height; 

    public Cube(int length, int breadth, int height) { 
     this.length = length; 
     this.breadth = breadth; 
     this.height = height; 
    } 

    public int volume(){ 
     return length * breadth * height; 
    } 

} 

と次のように使用することができます。

public static void main(String[] args) { 
    Cube c = new Cube(10, 20, 30); 
    System.out.println(c.volume()); 
} 
+0

thanku darioo ....私は関数呼び出しについてもっと学ぶのを手伝ってくれました。 – vidhya

1

これは常にreturn 0長&幅&高さは、最初は0であるため、

public static int volume(final int i, final int j, final int k){ 
    return length * breadth * height; 
} 

そのような変更をし、それはあなたが呼び出すときに理由があること

public static int volume(final int i, final int j, final int k){ 
    return i*j*k; 
} 
0

に動作します:

return length * breadth * height; 

これらの変数を初期化していなかったオブジェクト内に囲まれあなたはオブジェクト指向のルートに行きたい場合は、新しいキーワードを使用してインスタンス化する必要があります。長さ、幅および高さのデータをカプセル化する必要がない場合は、静的を使用することをお勧めします。

-2
public class cube{ 
    static int length=20; 
    static int breath=30; 
    static int height=10; 

    public static int volume(final int i, final int j, final int k){ 
     System.out.println("i=" + i + "j= " + j + "k= " + k); 
     return length*breath*height; 
    } 

    public static void main(final String args[]){ 
     int a; 
     a=volume(10, 20, 30); 
      System.out.println(" area of cube " + a); 
    } 
}
関連する問題