使用static关键字

时间:2011-01-05 12:41:09

标签: java

我在java中编写了一个非常简单的程序,用于使用static关键字。但我得到输出为0.我无法找到原因。我是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));
    }
}

5 个答案:

答案 0 :(得分:6)

int个字段static是否已初始化为0

您应该将操作数(i * j * k)相乘或分配到静态int字段。

答案 1 :(得分: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;
}

您遇到了问题,因为值10, 20, 30已传递给i, j, k,但您未将其分配给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());
}

答案 2 :(得分: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;
}

答案 3 :(得分:0)

你打电话的原因是:

return length * breadth * height; 

这些变量包含在尚未初始化的对象中,如果要转向面向对象的路径,则需要使用new关键字对其进行实例化。如果不需要封装长度,宽度和高度的数据,您可能希望使用静态。

答案 4 :(得分:-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);
    }
}