【发布时间】:2016-03-16 19:56:39
【问题描述】:
public class PizzaEx {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
char letter;
String input;
int sizeD;
int pizzaCount=1;
Pizza pieOne;
do{
sizeD = getValidSize();
input = JOptionPane.showInputDialog(null, "What type of topping do you wish to order? " +
"\n Green Pepper" +
"\n Mushroom"+
"\n Sausage"+
"\n Pepperoni"+
"\n Plain");
pieOne = new Pizza(sizeD, input);
System.out.println(pieOne);
System.out.println("The Number of pizzas made are " + pieOne.getPizzaCount() +"."+"\n");
input = JOptionPane.showInputDialog(null, "Do you wish to continue?\n "+
"'y' or 'Y' for YES\n"+
"'n' or 'N' for NO\n");
letter = input.charAt(0);
pizzaCount = pizzaCount +1;
}
while (letter == 'Y'|| letter == 'y');
System.exit(0);
}
private static int getValidSize()
{
int d;
String input;
do{
input = JOptionPane.showInputDialog(null, "What size of pizza do you wish to order? "+
"\n 9 inch"+
"\n 12 inch"+
"\n 16 inch");
d = Integer.parseInt(input);
} while (!(d==9 || d==12 || d==16));
return d;
}
以上是我的主要课程
public class Pizza {
private int diameter;
private int numOfPizza;
private double price;
private String tops;
Pizza(int sizeD, String input) {
diameter = sizeD;
tops = input;
}
public int getDiameter(){
return diameter;
}
/**
*
* @param pizzaCount
* @return
*/
public int getPizzaCount(){
return numOfPizza;
}
public double getPrice(){
return price;
}
public String getToppings(){
return tops;
}
public void setDiameter(int sizeD){
if (sizeD == 9)
diameter = 9;
else if ( sizeD == 12)
diameter = 12;
else if (sizeD == 15)
diameter = 15;
else
diameter = 0;
}
public void setPizzaCount(int pizzaCount){
numOfPizza = pizzaCount;
}
public void setPrice(double total){
price = total;
}
public void setToppings(String input){
if ("green pepper".equalsIgnoreCase(input))
tops = "Green Pepper";
else if ("mushroom".equalsIgnoreCase(input))
tops = "Mushroom";
else if ("sausage".equalsIgnoreCase(input))
tops = "Sausage";
else if ("pepperoni".equalsIgnoreCase(input))
tops = "Pepperoni";
else
tops = "Plain";
}
private double calculatePrice(int sizeD, String input){
double total;
if (sizeD == 9 && (tops).equalsIgnoreCase("plain"))
total = 5.95;
else if (sizeD == 9)
total = 6.95;
else if (sizeD == 12 && (tops).equalsIgnoreCase("plain") )
total = 7.95;
else if (sizeD == 12)
total = 8.95;
else if (sizeD == 16 && (tops).equalsIgnoreCase("plain"))
total = 9.95;
else if (sizeD == 16)
total = 10.95;
else
total = 0.0;
return total;
}
public String toString(){
String pizzaString ="You have ordered a "+diameter + " inch pizza with "+tops +" toppings and a price of $"+ calculatePrice(diameter, tops);
return pizzaString;
}
当我打印出来时,即使我设置了pizzaCount = 1,它仍然显示制作的比萨饼数量 = 0。此外,当它要求浇头时,如果我键入除了有效浇头选项{"green peppers", "mushroom", "sausage", "pepperoni", "plain"} 之外的任何字符串,它将将该字符串计为浇头,并且当它应该是任何不应该是{"green peppers", "mushroom", "sausage", "pepperoni"} 的东西时将被收取浇头的费用@ 应该考虑@ 987654326@
这不是家庭作业或测试问题。这是我的教授分发的一些额外练习,不是为了成绩。我只是想要一些帮助来澄清为什么没有为 String tops 分配 setToppings() 方法调用的值。
【问题讨论】:
-
你在 PizzaEx 主方法中设置了 PizzaCount 等于 1。但是你打印出 pieOne.getPizzaCount()。这从 Pizza 类中的 numOfPizza 中提取,该类永远不会设置。
-
所以如果我选择一个带有无效配料的 9 英寸披萨,如“橄榄”//打印输出将是你订购了一个 9 英寸的带橄榄配料的披萨,价格为 6.95 美元进行编辑以将“橄榄”更改为“普通”,因为橄榄不是有效选项。
标签: java methods constructor