java:关于编程考试

时间:2016-03-14 00:45:16

标签: java

好的,所以不要因为我想要家庭作业的帮助而被关闭。 无论如何,我不想解释整个项目的这一点帮助,但我会列出一些规则,以及我用它们做了什么。它们处于奇怪的顺序,并没有完全合理。并且有很多方法可以做到这一点,我根本不知道是什么。

所以这是我很困惑的规则:

三个字段,购买名称的字符串,购买单位的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



}

你真的不需要那个,但为了以防万一。那一团糟,不知道我在写什么。但感谢任何有帮助的人。

3 个答案:

答案 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语句(或三元语,如果您熟悉这些语句)添加到setUnitsPurchasedsetCostPerUnit检查零以下的值

  

不确定这是否意味着什么,所以我继续。然后:构造函数按顺序初始化这三个字段(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)

  1. 三个字段,购买名称的字符串,购买单位的int和每单位成本的双倍。
  2. 你说得对,但不需要为数据成员分配任何值。

    private String purchase;
    private int unitsPurchased;
    private double costPerUnit;
    
    1. 每个字段的标准访问者和修饰符方法
    2. 你也是这样。

      1. 不允许使用负值,因此在所有情况下都将其更改为零。
      2. 您需要更改代码以将neg值转换为零。 e.g。

        public void setunitsPurchased(int unitsPurchased){
            if(unitsPurchased < 0)
                unitsPurchased = 0;   
            this.unitsPurchased = unitsPurchased;
        }
        
        1. 构造函数,按顺序初始化这三个字段(String,int,double)。
        2. 你说得对。虽然您可能希望将此关键字用于数据成员。它只是使它更具可读性。

          public Purchase(String initialPurchase, int initialUnitsPurchased, double initialCostPerUnit){
          this.purchase = initialPurchase;
          this.unitsPurchased = initialUnitsPurchased;
          this.costPerUnit = initialCostPerUnit;
          }
          
          1. 构造函数重载,(String,double)假定int数量为零。
          2. 这很简单。你想要一个只有2个参数的构造函数。它还指定将unitsPurchased设置为0。

            public Purchase(String initialPurchase, double initialCostPerUnit){
            this.purchase = initialPurchase;
            this.unitsPurchased = 0;
            this.costPerUnit = initialCostPerUnit;
            }
            
            1. 假定名称为“”并且数字为零的默认构造函数,必须调用三个参数构造函数。&#39;
            2. 现在您知道默认构造函数不接受任何参数。但问题是要求在此构造函数中调用三个参数构造函数。可以使用this()完成,如下所示:

              public Purchase(){
                  this("", 0, 0.0);
              }