我创造了一个玛格丽塔披萨。我希望它存储一些值,例如一些成分和成本。我正在尝试打印这些值,但我得到了null
个值。
但是我注意到如果我删除了marg.setCost并且只使用了setCost,它就像我想要的那样工作。但我想如果我创建了一个marg对象,我应该保留marg对象中的值。我喝了很多咖啡,我很困惑:(
答案 0 :(得分:1)
在函数margharita中,您正在创建另一个pizzamenu并设置该对象的属性。您尚未设置原始对象的属性。所以你得到null。但是你需要设置“this”对象的属性。更改以下功能:
public void margherita(){
setIngredient1( "tomato" );
setIngredient2( "basil" );
setIngredient3( "mozzerella" );
setCost( 5.7 );
etBase( "thin" );
}
答案 1 :(得分:1)
现在你还在使用
public void margherita(){
PizzaMenu marg = new PizzaMenu();
marg.setIngredient1( "tomato" );
marg.setIngredient2( "basil" );
marg.setIngredient3( "mozzerella" );
marg.setCost( 5.7 );
marg.setBase( "thin" );
marg.setPizza("margherita");
}
但你需要使用
public void margherita(){
setIngredient1( "tomato" );
setIngredient2( "basil" );
setIngredient3( "mozzerella" );
setCost( 5.7 );
setBase( "thin" );
setPizza("margherita");
}
这背后的原因是你正在为该对象创建新对象和赋值。因为这些数据成员不是静态的,所以它们不会改变你的obejct( u )值。
答案 2 :(得分:0)
我不确定这是否与您的代码完全匹配,但是如果它确实是
public void makePizza(){
String pizza = margherita;
}
这不是String,因此变量pizza被赋予空值。请尝试将其括在引号中,如
String pizza = "margherita";
答案 3 :(得分:0)
你的问题在这里:
public void makePizza(){
String pizza = margherita;
if( pizza.equalsIgnoreCase("margherita")){
setPizza("margherita");
margherita();
}
}
注意单独调用margerita()
- 这意味着您正在创建一个单独的 Pizza对象,然后您可以将其丢弃。您可以在设置之后访问pizza属性,但从未设置其他属性。您需要显式调用各种set方法,以便存储您当前使用的披萨的成分。
答案 4 :(得分:0)
public void margherita(){
PizzaMenu marg = new PizzaMenu();
marg.setIngredient1( "tomato" );
marg.setIngredient2( "basil" );
marg.setIngredient3( "mozzerella" );
marg.setCost( 5.7 );
marg.setBase( "thin" );
}
public static void main(String[] args) {
PizzaMenu u = new PizzaMenu();
u.makePizza();
u.print();
}
也许是因为你实例化了PizzaMenu对象类两次......“新的PizzaMenu()” 一个在Main方法中,一个在margherita()方法中......
如果这是您想要处理代码的方式..您可以为对象类PizzaMenu创建一个重载的构造函数,它将再次设置值。
对于前。
PizzaMenu(String ingredient, String ingredient2, ..etc..){
/*Do the setters here..*/
}
但实际上这不是一个好的编程结构......希望它有所帮助
答案 5 :(得分:0)
我认为这是范围问题。在margherita()
中,您正在创建新的对象。但是在print()
中你正在调用当前的obj值。设置为新obj marg
的值。所以尝试打印
public void print(){
System.out.println( String.format( "Good choice! You picked the " + "%s", getPizza() ));
System.out.println( String.format( "The " + "%s" + " is made with " + "%s" + ", " + "%s" + " and " + "%s", marg.getPizza(), marg.getIngredient1(),marg.getIngredient2(), marg.getIngredient3() ) );
System.out.println( String.format( "And the price is a very reasonable £" + "%.2f", marg.getCost() ));
}
print()
可能看不到marg obj。尝试发送比obj作为参数!