所以我完成了我的代码,遇到了错误,并且不知道为什么!
字符串"大小"当它到达" baseArea()"时为null。方法
不显示任何错误。
编辑:添加了类的Main方法,其中引用了所有内容,请注意这不是类中的完整代码!
这是相关代码:
public class OrderingSystem
{
private Canvas canvas;
private double Price;
private String Topping1 = setTopping1();
private String Topping2 = setTopping2();
private String Sauce = setSauce();
private String Size;
private String Crust;
private double BaseArea;
/**
* Constructor for the ordering system.
*/
public OrderingSystem()
{
canvas = new Canvas("Pizza Ordering", 900, 650);
}
/**
* Method to draw the outline of the order screen.
*/
public void drawOrderScreen()
{
canvas.setForegroundColor(Color.BLACK);
// vertical dividers
canvas.drawLine(300, 0, 300, 600);
canvas.drawLine(600, 0, 600, 600);
// halfway divider
canvas.drawLine(0, 300, 900, 300);
setSauce();
startToppings();
startOrdering();
setSize();
baseArea(BaseArea, Size);
Crust();
}
public String setSize(){
System.out.print("What size would you like: Large, Medium or Small? : ");
Scanner sizescanner = new Scanner(System.in);
String Size = sizescanner.nextLine();
if (Size.equals("Large")){
System.out.print( "Large selected ! ");
}
else if (Sauce.equals("Medium")){
System.out.print( "Medium selected !" );
}
else if (Sauce.equals("Small")){
System.out.print( "Small selected !" );
}
else {
sizescanner.reset();
System.out.print("Invalid Size! ");
setSize();
}
return Size;
}
public double baseArea(double baseArea,String Size){
if (Size.equals("Large")){
baseArea = 176.7150;
}
else if (Size.equals("Medium")){
baseArea = 113.0976;
}
else if (Size.equals("Small")){
baseArea = 78.54;
}
return baseArea;
}
答案 0 :(得分:1)
您的setSize
方法从扫描程序中获取大小,但实际上从未设置Size
字段的值,只返回它。
将setSize
方法的返回类型更改为void
,并将该方法中的return Size;
来电替换为this.Size = Size;
。
另一个注意事项,你的递归也有点破碎。在else块中调用setSize
后,您需要从方法返回以防止使用无效的大小更新字段。
答案 1 :(得分:1)
在setSize()
方法中,除非您输入“大'当您检查Sauce值是否等于输入的值时,其他所有内容都将变为空:
if(Size.equals("large"){
doSomething();
} else if (Size.equals("medium"){
doSomething();
} else if(Size.equals("small"){
doSimething();
}