与构造函数一起工作并且非常困惑

时间:2013-05-28 02:43:49

标签: java constructor

这是我第一次尝试与“建设者”做任何事情,经过一个小时左右的时间寻找这个主题的帮助,我仍然觉得我不知道自己在做什么。

所以这是我为不同的程序创建的类文件,它应该有2个构造函数。我尽我所能,但编译器一直告诉我,我需要标识符。

如何识别构造函数?

   public class property
{
int storey = 0;
int width = 0;
int length = 0;

    property(int storey, int width, int length)
    {
        {
        this.storey = storey;
        this.width = width;
        this.length = length;
        }

    }

    property(int width, int length)
    {
        this(1, width, length);

    }


    public int calculateArea(int area)
    {

        return (storey * width * length);

    }

    public double calculatePrice(double price)
    {

       return (((storey * width * length) * 2.24) *1.15);

    }

}

5 个答案:

答案 0 :(得分:3)

编译器告诉您需要指定p1p2变量应该是什么类型。例如:

property(int p1)
{
  // constructor
}

其他一些建议:

  • 班级名称应为上骆驼案例,即Property
  • 两个构造函数都在为自己分配字段,您应指定storeywidthlength作为构造函数参数,然后使用this关键字将它们分配给字段:

Property(int storey, int width, int length)
{
  this.storey = storey;
  this.width = width;
  this.length = length;
}
  • 如果要在构造函数中使用默认值,则可以调用其他构造函数:

Property(int width, int length)
{
  this(1, width, length);
}
  • calculateAreacalculatePrice应返回计算值。分配给参数将不起作用:

public int calculateArea()
{
    return (storey * width * length);
}
  • 为属性的字段添加访问者:

public int getStorey()
{
    return storey;
}

然后您可以使用您的财产:

BufferedReader br = new BufferedReader(System.in); 
System.out.println("storey: ");     
int storey = Integer.parseInt(br.readLine()); 

System.out.println("width: ");     
int width = Integer.parseInt(br.readLine()); 

System.out.println("length: "); 
int length = Integer.parseInt(br.readLine()); 

Property p = new Property(storey, width, length); 
System.out.println("property dimensions:width " + p.calculateArea()); 
System.out.println("width: " + p.getWidth()); 
System.out.println("length: " + p.getLength()); 
System.out.println("storeys: " + p.getStoreys()); 
System.out.println("area: " + p.calculateArea());
System.out.println("price: " + p.calculatePrice());    

答案 1 :(得分:1)

构造函数需要知道p1p2的类型。你可能想要对这些值做些什么,例如您可以将p1或p2的值分配给宽度或长度。

您已撰写if(storey >> 1) - 您的意思是if (storey > 1)吗?

如果storey不是1,我也会为构造函数提供一些默认值。赞:

property(int s, int w, int l)
{
    if (l > 1)
    {
        storey = s;
        width = w;
        length = l;
    }
    else
    {
        storey = 0;
        width = 0;
        length = 0;
    }
}

答案 2 :(得分:0)

您需要指定构造函数参数的类型,此处为p1p2

例如:

property(int p2)

答案 3 :(得分:0)

这里需要指定datatypes.How编译器知道它们是哪种类型

 property(p1) 

示例:property(int p1)

答案 4 :(得分:0)

传递给构造函数的p1p2需要有一个与之关联的类型。所以你会这样:

public property(int p1)
{
    //do something
}