创建一个鞋子对象

时间:2017-08-01 19:52:08

标签: java

我无法弄清楚为什么我的代码没有注册对象上有最大大小。我可能认为这是因为底部变量可能会覆盖最小值和最大值但是,它似乎没有帮助

public class Shoes {

private static final int MIN_SIZE = 1;
private static final int MAX_SIZE = 15;

private String brand;
private double price;
private int size;

public Shoes(String brand, double price, int size) {
   this.brand = brand;
   this.price = price;
   this.size = size;
}

public String getBrand() {
   return brand;
}

public void setBrand(String brand) {
   this.brand = brand;
}

public double getPrice() {
   return price;
}

public void setPrice(double price) {
   if (price < 0) {
       System.out.println("Price Must be greater than zero!\n");
       return;
   }
   this.price = price;
}

public int getSize() {
   return size;
}

public void setSize(int size) {
   if (size > MAX_SIZE && size < MIN_SIZE) {
       System.out.println("Invalid Size!\n");

   }

}

@Override
public String toString() {
   return "Shoe [brand = " + brand + ", price = " + price + ", size = " +      size + "]";
}

public static void main(String[] args) {
Shoes myShoes = new Shoes("J.F.", 45.99, 10);
Shoes otherShoes = new Shoes("Addidas", 65.99, 16);

System.out.println("The shoes: ");
System.out.println(myShoes.toString());

System.out.println("Other Shoes: ");
System.out.println(otherShoes.toString());

   }
}

其他人应该注册为无效大小。但它只是正常运行代码,并且根本不输出无效大小的文本。我不明白为什么。

4 个答案:

答案 0 :(得分:0)

您的问题是您没有检查构造函数中的大小。您已将其降级为一个未在对象初始化时调用的单独方法。

答案 1 :(得分:0)

您不要在构造函数中调用setSize方法。因此,不执行检查。

您可以简单地更改构造函数以使用如下方法:

public Shoes(String brand, double price, int size) {
    this.brand = brand;
    this.price = price;
    setSize(size);
}

答案 2 :(得分:0)

正如我所看到的,在你的构造函数中,你没有使用&#34; setSize&#34;方法,但您可以将值从参数直接复制到字段&#34; size&#34;。因为那种方法&#34; setSize&#34;没有被解雇,因此该方法的验证没有发生。我建议你修改构造函数的代码,所以不要直接设置&#34; size&#34;的值。您将使用的字段&#34; setSize&#34;方法如:

public Shoes(String brand, double price, int size) {
  this.brand = brand;
  this.price = price;
  this.setSize(size);
}

希望它有所帮助!

答案 3 :(得分:0)

有两个问题。 1.大小设置器中的数据验证不起作用。您当前的逻辑表明,如果大小大于15 AND(&amp;&amp;)小于1,则它将注册无效。这种情况永远不会成真。相反,你应该说大于15 OR(||)小于1。 2.您没有通过验证调用大小设置器。您应该在构造函数中使用setter。所以你的构造函数看起来像这样:

 public Shoes(String brand, double price, int size) {
   setBrand(brand);
   setPrice(price);
   setSize(size);
}