我在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));
}
}
答案 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);
}
}