Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与施工人员一起工作,非常困惑_Java_Constructor - Fatal编程技术网

Java 与施工人员一起工作,非常困惑

Java 与施工人员一起工作,非常困惑,java,constructor,Java,Constructor,这是我第一次尝试与“构造器”做任何事情,在一个小时左右的时间里四处寻找关于这个话题的帮助后,我仍然觉得我不知道自己在做什么 这是我为另一个程序创建的类文件,它应该有两个构造函数。我尽了最大努力,但编译器一直告诉我需要标识符 如何识别构造函数 public class property { int storey = 0; int width = 0; int length = 0; property(int storey, int width, int length) {

这是我第一次尝试与“构造器”做任何事情,在一个小时左右的时间里四处寻找关于这个话题的帮助后,我仍然觉得我不知道自己在做什么

这是我为另一个程序创建的类文件,它应该有两个构造函数。我尽了最大努力,但编译器一直告诉我需要标识符

如何识别构造函数

   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);

    }

}

您需要指定构造函数参数的类型,这里是
p1
p2

例如:

property(int p2)
property(int p1)
{
  // constructor
}

您需要指定构造函数参数的类型,这里是
p1
p2

例如:

property(int p2)
property(int p1)
{
  // constructor
}

编译器告诉您需要指定
p1
p2
变量的类型。例如:

property(int p2)
property(int p1)
{
  // constructor
}
其他一些建议:

  • 类名应为大写,即
    属性
  • 两个构造函数都为自己分配字段,您应该指定
    楼层
    宽度
    长度
    作为构造函数参数,然后使用
    this
    关键字将它们分配给字段:

  • 如果要在构造函数中设置默认值,则可以调用其他构造函数:

  • calculateArea
    calculatePrice
    应返回计算值。指定给参数将无效:

  • 为属性的字段添加访问器:

然后,您可以使用您的属性,如:

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());    

编译器告诉您需要指定
p1
p2
变量的类型。例如:

property(int p2)
property(int p1)
{
  // constructor
}
其他一些建议:

  • 类名应为大写,即
    属性
  • 两个构造函数都为自己分配字段,您应该指定
    楼层
    宽度
    长度
    作为构造函数参数,然后使用
    this
    关键字将它们分配给字段:

  • 如果要在构造函数中设置默认值,则可以调用其他构造函数:

  • calculateArea
    calculatePrice
    应返回计算值。指定给参数将无效:

  • 为属性的字段添加访问器:

然后,您可以使用您的属性,如:

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());    

这里您需要指定数据类型。编译器如何知道它们是哪种类型

 property(p1) 

示例:
属性(intp1)

这里您需要指定数据类型。编译器如何知道它们是哪种类型

 property(p1) 

示例:
property(intp1)

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

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

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

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

构造函数需要知道
p1
p2
是什么类型。您可能希望对这些值进行处理,例如,您可以将p1或p2的值指定给宽度或长度

你已经写了
if(story>>1)
-你是说
if(story>1)

另外,如果
story
不是1,我会为构造函数提供一些默认值。比如:

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

构造函数需要知道
p1
p2
是什么类型。您可能希望对这些值进行处理,例如,您可以将p1或p2的值指定给宽度或长度

你已经写了
if(story>>1)
-你是说
if(story>1)

另外,如果
story
不是1,我会为构造函数提供一些默认值。比如:

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

p1和p2需要数据类型:正如答案所示,您需要构造函数参数的数据类型,但我怀疑您也需要多个参数。看起来您正在将成员的楼层、宽度和长度指定为其默认值。这似乎不对。我猜你是想把这些值传递给构造函数。p1和p2是什么。如果它们是变量,那么首先声明它们。声明p1和p2的数据类型,并使用不同类型和数量的参数覆盖多个构造函数。p1和p2需要数据类型:正如答案所示,您需要构造函数参数的数据类型,但我怀疑您也需要多个参数。看起来您正在将成员的楼层、宽度和长度指定为其默认值。这似乎不对。我猜你是想把这些值传递给构造函数。p1和p2是什么。如果它们是可变的,那么首先声明它们。声明p1和p2的数据类型,并使用不同类型和数量的参数覆盖多个构造函数。我需要做的就是计算storey是1还是storey大于1。但是如果storey最初是0,初始化时它怎么可能是1?看看我在编辑时添加的代码。为了测试某个值是否大于另一个值,您需要使用
>
符号,
>
是正确的位移位,并且执行完全不同的操作。下面是一个很好的解释,说明一个好的构造函数应该是什么样子:声明成员变量(楼层、宽度、长度)是标准做法private并有getter和setter来修改它们(但只有在创建了对象之后),这样的解释是:在初始化对象时,构造函数将为成员变量赋值,根据传递的参数数量,有几个不同的构造函数是很好的。我所需要做的就是计算出楼层是1还是楼层大于1。但是如果楼层最初是0,初始化时它怎么可能是1?助教