我创建了一个简单的系统来创建汉堡包,您可以在其中添加成分,然后根据所选择的成分来计算价格,基准价格是5(不含额外成分),对于每种成分,我将其值设置为是的,我有一个价格计数器,该计数器会将基本价格再增加1欧元/美元,这里的问题是布尔值字段不会被初始化为false,即使是我在Constructor类中进行了设置,我也无法了解原因。
我尝试将布尔字段设置为false,因为它们不在参数中,但是它们不会更改,在我提供的代码中,我希望价格为5,因为我尚未设置任何其他成分,因此该方法price()应该只返回我设置的基本价格(5),并且不添加任何其他成分,但这不会发生,因为所有布尔字段均设置为true,这意味着它们将为每个真实值加1,因此返回的价格为9。 问这个问题可能真的很愚蠢,但是我是一个完全编程的菜鸟,所以我要感谢是否有人能解释为什么我没有得到想要的结果。
public class Hamburger {
private String bun;
private String meat;
private double price;
private boolean letuce;
private boolean tomato;
private boolean bacon;
private boolean sauce;
public Hamburger(String bun, String meat) {
this.bun = bun;
this.meat = meat;
this.price = 5;
this.letuce = false;
this.tomato = false;
this.bacon = false;
this.sauce = false;
}
public double price() {
if(letuce = true)
price+=1;
if(tomato = true)
price+=1;
if(bacon = true)
price+=1;
if(sauce = true)
price+=1;
return price;
}
public void setLetuce(boolean letuce) {
this.letuce = letuce;
}
public void setTomato(boolean tomato) {
this.tomato = tomato;
}
public void setBacon(boolean bacon) {
this.bacon = bacon;
}
public void setSauce(boolean sauce) {
this.sauce = sauce;
}
}
我希望输出为5,但输出为9
答案 0 :(得分:4)
在if检查中,您使用=
而不是==
。
单个=
是一个分配,一个分配返回分配的值,在这种情况下,true
就是代码返回9而不是5的原因
这将按预期工作:
public double price() {
if(letuce == true)
price+=1;
if(tomato == true)
price+=1;
if(bacon == true)
price+=1;
if(sauce == true)
price+=1;
return price;
}
答案 1 :(得分:0)
letuce = true
是一个赋值,将letuce的值更改为true,并且本身的值为true