好的,所以不要因为我想要家庭作业的帮助而被关闭。 无论如何,我不想解释整个项目的这一点帮助,但我会列出一些规则,以及我用它们做了什么。它们处于奇怪的顺序,并没有完全合理。并且有很多方法可以做到这一点,我根本不知道是什么。
所以这是我很困惑的规则:
三个字段,购买名称的字符串,购买单位的int和每单位成本的双倍。
所以我做了这个:
private String purchase = "";
private int unitsPurchased = 0;
private double costPerUnit = 0;
然后,下一条规则: 每个字段的标准访问器和修改器方法,所以我做了这个:
//Accessors
public String purchase(){
return purchase;
}
public int unitsPurchased(){
return unitsPurchased;
}
public double costPerUnit(){
return costPerUnit;
}
//Modifiers
public void setPurchase(String purchase){
this.purchase = purchase;
}
public void setunitsPurchased(int unitsPurchased){
this.unitsPurchased = unitsPurchased;
}
public void setCostPerUnit(double costPerUnit){
this.costPerUnit = costPerUnit;
}
然后:不允许使用负值,因此在所有情况下都将其更改为零。
不确定这是否意味着什么,所以我继续。 然后这个:构造函数按顺序初始化这三个字段(String,int,double)。
所以我这样做了:
public Purchase(String initialPurchase, int initialUnitsPurchased, double initialCostPerUnit){
purchase = initialPurchase;
unitsPurchased = initialUnitsPurchased;
costPerUnit = initialCostPerUnit;
}
然后这条规则:构造函数重载,(String,double)假设int数量为零。
我不知道这是否意味着什么,所以我再次跳过它
然后这个规则:默认构造函数,假设name为“”,数字为零,必须调用三个参数构造函数。'
现在我只是困惑。首先,我想知道我的代码是否正确。我认为我不需要解释该程序的背景故事。然后,我想知道如何处理最后一条规则,因为它说“必须调用三个参数构造函数”,我应该使用“this”吗?我不知道去哪里,我尝试了几个想法,但我认为它不起作用。我无法测试是否也是正确的,因为没有什么可以测试的。非常感谢任何帮助过的人。
以下是我写的所有内容:
public class Purchase {
private String purchase = "";
private int unitsPurchased = 0;
private double costPerUnit = 0;
//Accessors
public String purchase(){
return purchase;
}
public int unitsPurchased(){
return unitsPurchased;
}
public double costPerUnit(){
return costPerUnit;
}
//Modifiers
public void setPurchase(String purchase){
this.purchase = purchase;
}
public void setunitsPurchased(int unitsPurchased){
this.unitsPurchased = unitsPurchased;
}
public void setCostPerUnit(double costPerUnit){
this.costPerUnit = costPerUnit;
}
//Default constructor
public Purchase(){
purchase = "";
unitsPurchased = 0;
costPerUnit = 0;
}
//first constructor
public Purchase(String initialPurchase, int initialUnitsPurchased, double initialCostPerUnit){
purchase = initialPurchase;
unitsPurchased = initialUnitsPurchased;
costPerUnit = initialCostPerUnit;
}
//constructor overload
//Default constructor
}
你真的不需要那个,但为了以防万一。那一团糟,不知道我在写什么。但感谢任何有帮助的人。
答案 0 :(得分:1)
无法解释清楚。如果您可以阅读,它会自行写出:
public class Purchase {
private String purchase;
private int numUnits;
private double costPerUnit;
public Purchase() {
this("", 0, 0.0);
}
public Purchase(String purchase, double costPerUnit) {
this(purchase, 0, costPerUnit);
}
public Purchase(String purchase, int numUnits, double costPerUnit) {
this.purchase = purchase;
this.numUnits = (numUnits < 0) ? 0 : numUnits;
this.costPerUnit = (costPerUnit < 0.0) ? 0.0 : costPerUnit;
}
// Leave the rest for you.
}
答案 1 :(得分:1)
从您不理解的第一条规则开始:
不允许使用负值,因此在所有情况下都将其更改为零。
这是指您编写的setter方法,这意味着如果有人使用否定数字作为参数调用setUnitsPurchased
,则只需设置unitsPurchased = 0
。< / p>
您可能希望将if
语句(或三元语,如果您熟悉这些语句)添加到setUnitsPurchased
并setCostPerUnit
检查零以下的值
不确定这是否意味着什么,所以我继续。然后:构造函数按顺序初始化这三个字段(String,int,double)。
而不是直接设置值(就像你做的那样):
purchase = initialPurchase;
unitsPurchased = initialUnitsPurchased;
costPerUnit = initialCostPerUnit;
您应该打电话给您的安装人员,这样您就不必重复检查:
this.setUnitsPurchased(initialUnitsPurchased);
// etc.
构造函数重载,(String,double)假设int数量为零。
如果某个类具有重载的构造函数,则意味着您可以使用不同的数量和/或类型的参数对其进行初始化。您已经使用空构造函数重载了构造函数,并且使用了三个参数。
只需创建另一个构造函数,但使用此签名:
public Purchase(String initialPurchase, double initialCostPerUnit)
假定名称的默认构造函数是&#34;&#34;并且数字为零,必须调用三个参数构造函数。
您必须调用三个参数构造函数,而不是您实现的默认构造函数。要调用另一个构造函数,请使用this
关键字,并像方法一样调用它,传入正确的参数:
this("", 0, 0);
快乐的编码!
答案 2 :(得分:1)
你说得对,但不需要为数据成员分配任何值。
private String purchase;
private int unitsPurchased;
private double costPerUnit;
你也是这样。
您需要更改代码以将neg值转换为零。 e.g。
public void setunitsPurchased(int unitsPurchased){
if(unitsPurchased < 0)
unitsPurchased = 0;
this.unitsPurchased = unitsPurchased;
}
你说得对。虽然您可能希望将此关键字用于数据成员。它只是使它更具可读性。
public Purchase(String initialPurchase, int initialUnitsPurchased, double initialCostPerUnit){
this.purchase = initialPurchase;
this.unitsPurchased = initialUnitsPurchased;
this.costPerUnit = initialCostPerUnit;
}
这很简单。你想要一个只有2个参数的构造函数。它还指定将unitsPurchased设置为0。
public Purchase(String initialPurchase, double initialCostPerUnit){
this.purchase = initialPurchase;
this.unitsPurchased = 0;
this.costPerUnit = initialCostPerUnit;
}
现在您知道默认构造函数不接受任何参数。但问题是要求在此构造函数中调用三个参数构造函数。可以使用this()完成,如下所示:
public Purchase(){
this("", 0, 0.0);
}