Java 静态关键字的使用
我用java编写了一个非常简单的程序来使用static关键字,但是我得到的结果是0。我找不到原因。我是一名java初学者。请任何人提出解决方案,并解释为什么会遇到这样的问题…我的代码如下:Java 静态关键字的使用,java,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
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));
}
}
int字段(静态或非静态)初始化为0
您应该将操作数i*j*k相乘或分配给静态整型字段。整型字段,无论是否为静态,都初始化为0
应将操作数i*j*k相乘或分配给静态int字段。将方法更改为:
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,但您没有将它们指定给长度、宽度和高度
顺便说一下,在这种情况下,你不需要静电。这对你的班级来说是一个更好的设计:
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());
}
将您的方法更改为:
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,但您没有将它们指定给长度、宽度和高度
顺便说一下,在这种情况下,你不需要静电。这对你的班级来说是一个更好的设计:
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,因为长度、宽度和高度最初为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,因为长度、宽度和高度最初为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;
}
原因是当你打电话时:
return length * breadth * height;
这些变量包含在一个尚未初始化的对象中,如果您想使用面向对象的方法,则需要使用new关键字对其进行实例化。如果不需要封装长度、宽度和高度的数据,则需要使用static 原因是您打电话时:
return length * breadth * height;
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);
}
}
这些变量包含在一个尚未初始化的对象中,如果您想使用面向对象的方法,则需要使用new关键字对其进行实例化。如果不需要封装长度、宽度和高度的数据,则需要使用static 我猜在没有静态关键字的情况下你是不会尝试的。因为你会得到相同的结果,这表明它与static关键字无关。使用一个像样的编辑器,比如Eclipse,会帮助你解决这个问题,因为它会警告你i、j和k没有任何关系。实际上,我不确定eclipse是否会警告您未使用的方法参数,除非您将设置调高。我猜您没有尝试在没有静态关键字的情况下使用。因为你会得到相同的结果,这表明它与static关键字无关。使用一个像样的编辑器,比如Eclipse,会帮助你解决这个问题,因为它会警告你i、j和k没有任何关系。实际上,我不确定eclipse是否会警告您未使用的方法参数,除非您将设置调高。非常感谢eljenso…我从来没有想到函数中会出现这样的问题。再次感谢,我会小心不要再犯这样愚蠢的错误。非常感谢eljenso…我从来没有想到函数中会出现这样的问题。再次感谢,我会小心不要再犯这种愚蠢的错误。
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);
}
}