如何在Java中使用构造函数

时间:2013-11-06 04:32:07

标签: java

有人可以告诉我这个简单程序有什么问题吗?我的输出为“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);
    }
}

9 个答案:

答案 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)

您没有设置lengthwidth的值,默认情况下它们都是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);
    }
}

您决不将lengthwidth设置为等于任何内容。它们的初始值为0,您的程序正在按照您的要求进行操作。 area = length * width = 0 * 0 = 0

您也没有对传递给构造函数的xy做任何事情,但这可能不是您的意图。在编写程序时,您基本上需要明确指示计算机执行您想要执行的操作。它不会猜测你想要什么。如果您忽略xy,并且没有为lengthwidth分配任何值,那么这正是将要发生的事情,当您看到时,您不会感到惊讶你看到的结果。

答案 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;”