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?助教