gpt4 book ai didi

java - 构造函数中的 if 语句未按预期工作? java

转载 作者:行者123 更新时间:2023-12-01 06:49:11 25 4
gpt4 key购买 nike

这是我在父类中使用的构造函数:

    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;

}

所以为了澄清,我试图创建的逻辑是它检查输入是“法棍面包”还是“棕色黑麦”。如果不是其中任何一个,则additionalCost 字段将增加1.99。对于输入的肉类类型也实现了类似的逻辑。

我有一个具有以下构造函数的子类:

    public Healthy_Burger() {
super("brown rye","low-fat meat");
//addCost(this.baseCost-super.getBaseCost());
}

除非我错误地理解了构造函数中的 super(),否则我会认为我输入的参数将被传递到基本构造函数“Base”中,后跟 if 语句,然后检查面包或肉是否存在不是它正在寻找的那些,如果不是,它应该用相应的值增加 extraCost。

最终,我的问题是,当我像这样实例化“Healthy_Burger”时:

    Healthy_Burger burger = new Healthy_Burger();

我什至使用 setter/getter 来确保面包类型是“棕色黑麦”,但我遇到的问题是,在检查最终成本后,我发现面包类型和肉类的额外成本都被添加了,即使它们不是这样的,因为面包类型是“棕色黑麦”,肉是“低脂肉”,因此我的 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"))

关于java - 构造函数中的 if 语句未按预期工作? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51780983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com