arr*_*rey 0 java constructor if-statement class
这是我在父类中使用的构造函数:
    public Base(String breadType, String meat) {
    this.breadType = breadType;
    this.meat = meat;
    if(!this.breadType.equals("baguette")|| !this.breadType.equals("brown rye")) {
        this.additionalCost+= 1.99;
        System.out.println("Bread neither baguette or brown rye.");
    }
    if(!this.breadType.equals("beef") || !this.breadType.equals("low-fat meat")) {
        this.additionalCost+= 2.99;
        System.out.println("Meat neither beef or low-fat meat.");
    }
    this.finalCost = baseCost+additionalCost;
}
因此,为了澄清,我试图创建的逻辑是它检查输入是'baguette'还是'brown rye'.如果它不是这些中的任何一个,那么additionalCost字段将增加1.99.对于输入的肉类,已经实施了类似的逻辑.
我有一个带有以下构造函数的子类:
    public Healthy_Burger() {
        super("brown rye","low-fat meat");
        //addCost(this.baseCost-super.getBaseCost());
    }
除非我错误地理解了构造函数中的super(),否则我会认为我输入的参数将在基础构造函数"Base"中传递,后面跟着if语句,然后检查面包或肉是否不是它正在寻找的,如果不是,它应该使用相应的值增加additionalCost.
最终,我的问题是当我实例化一个'Healthy_Burger'时:
    Healthy_Burger burger = new Healthy_Burger();
我甚至使用getter来确保breadType是'褐色黑麦',但我遇到的问题是,在检查最终成本后,我发现添加了breadType和Meat的额外成本,即使它们不是意思是因为面包类型是'棕色黑麦'而肉'低脂肪肉'和我的if语句因此不应该返回true.
谢谢.
您正在检查的错误变量breadType来代替meat,并使用了错误的操作||,而不是&&
改变你的第二名if:
if (!this.breadType.equals("beef") || !this.breadType.equals("low-fat meat"))
至:
if (!this.meat.equals("beef") && !this.meat.equals("low-fat meat"))
| 归档时间: | 
 | 
| 查看次数: | 70 次 | 
| 最近记录: |