有人可以告诉我这个简单程序有什么问题吗?我的输出为“0”。
package myConst;
public class Doconstructor
{
int length,width;
Doconstructor(int x, int y)
{
int area;
area = length * width;
System.out.println("area ="+area);
}
}
class work
{
public static void main(String args[])
{
Doconstructor d1 = new Doconstructor(10, 15);
}
}
答案 0 :(得分:1)
Doconstructor d1 = new Doconstructor(10, 15);
// you are assigning values for x and y
但是
Doconstructor (int x,int y)
{
int area; // you are never use x and y values for calculation
area = length *width; // so area remain 0 since current length and width is 0
System.out.println("area ="+area);
}
您需要按如下方式更改代码。
Doconstructor (int x,int y)
{
int area;
this.length=x;
this.width=y;
area = length *width;
System.out.println("area ="+area);
}
答案 1 :(得分:1)
像这样编辑: -
package myConst;
public class Doconstructor
{
int length,width;
Doconstructor(int x, int y)
{
int area;
this.length=x;//Using this for current object
this.width=y;//Using this for current object
area = length * width;
System.out.println("area ="+area);
}
}
class work
{
public static void main(String args[])
{
Doconstructor d1 = new Doconstructor(10, 15);
}
}
您的输出将是:
area = 150
必读:
http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html
答案 2 :(得分:0)
您没有设置length
和width
的值,默认情况下它们都是0
。您可能必须这样做:
Doconstructor(int x, int y){
int area;
area = x * y;
length = x;
width = y;
System.out.println("Area = "+area);
}
答案 3 :(得分:0)
您没有使用传递给构造函数的变量值,而是使用已初始化为0的长度和宽度值。您需要area = x * y;
代替。
答案 4 :(得分:0)
长度和宽度字段隐式初始化为0.将它们相乘,得到0。
我认为你想要的是
length = y ;
width = x ;
int area = length * width ;
System.out.println("area ="+area);
答案 5 :(得分:0)
你有这个:
public class Doconstructor {
int length,width;
Doconstructor (int x,int y)
{
int area;
area = length *width;
System.out.println("area ="+area);
}
}
您决不将length
或width
设置为等于任何内容。它们的初始值为0,您的程序正在按照您的要求进行操作。 area = length * width = 0 * 0 = 0
。
您也没有对传递给构造函数的x
或y
做任何事情,但这可能不是您的意图。在编写程序时,您基本上需要明确指示计算机执行您想要执行的操作。它不会猜测你想要什么。如果您忽略x
和y
,并且没有为length
或width
分配任何值,那么这正是将要发生的事情,当您看到时,您不会感到惊讶你看到的结果。
答案 6 :(得分:0)
您正在课程级别编写int length,width
,因此默认情况下长度和宽度设置为0。
之后在构造函数中,您没有设置任何值的长度和宽度,所以你是长度和宽度的值是0.Hence区域也是0
请在此链接中查看default values
答案 7 :(得分:0)
构造函数用于创建对象和设置属性。您没有在构造函数中设置属性。以下是构造函数的外观。
Doconstructor(int x, int y){
length = x;
width = y;
}
其次,您要混合构造函数和方法的逻辑。您正在计算面积,这似乎非常适合您班级中的另一种方法。所以最好在单独的方法中移动该逻辑:
public int calculateArea() {
int area;
area = x * y;
return area;
}
最后使用构造函数创建一个对象来设置属性的长度和宽度。然后调用calculateArea方法来做计算区域的业务逻辑。
public static void main(String args[]){
Doconstructor d1 = new Doconstructor(10, 15); // create object and set length & width
d1.calculateArea();
}
答案 8 :(得分:0)
您没有将x和y的值分配给变量width和length。宽度和长度的默认值是(int)0。这就是你得到输出的原因(0 * 0 = 0)。首先将值赋给变量或使用“area = x * y;”