我试图使Java代码与用户通信。
该代码是关于在假设比萨价格为最终整数且不变的情况下计算比萨价格的。 唯一影响价格的因素是客户要在比萨饼上添加的东西(番茄,蘑菇,切达干酪)。 我尝试创建代码来涵盖客户使用'if'语句选择的所有选项, 但我认为有更简单的方法可以做到。 (我希望程序仅根据附加名称来计算价格。)
例如,客户选择蘑菇和番茄,因此比萨价格将是比萨价格+番茄价格+蘑菇价格。
有没有更简单的方法来解决它? 还是应该用if / else语句覆盖客户选择的所有选项?
public static void main(String[] args){
Scanner s= new Scanner(System.in);
final int pizzaPrice= 12;
int Mushrooms = 2;
int Tomato= 2;
int Corn = 2;
int Olives = 2;
int CheddarCheese=3;
int bulgaritCheese=3;
int yellowCheese= 3;
String cheapAddOns ="Mushrooms , Tomato, Corn, Olives";
String expensiveAddOns = "Cheddar cheese , Bulgarit cheese , Yellow cheese";
System.out.println("Please enter first AddOns(Mushrooms , Tomato , Corn, Olives): ");
cheapAddOns=s.next();
System.out.println("Please enter second AddOns (Cheddar cheese , Bulgarit cheese ,Yellow cheese)");
expensiveAddOns=s.next();
if( cheapAddOns== "Mushrooms" || expensiveAddOns=="Cheddar cheese" ) {
System.out.println("Your Pizza price is: $" + pizzaPrice + Mushrooms + CheddarCheese );
}
else if (cheapAddOns=="Tomato" || expensiveAddOns=="Bulgarit cheese") {
System.out.println("Your Pizza price is: $" +pizzaPrice+ Tomato + bulgaritCheese);
}
}
答案 0 :(得分:1)
首先,当您命名变量时,请不要以大写字母开头
int mushrooms
,而不是int Mushrooms
。
第二件事,当您比较字符串==
运算符时将不起作用。您必须使用stringName.equals()
。在您的情况下,它看起来像:
cheapAddOns = s.next();
if(cheapAddOns.equals("tomato") || cheapAddOns.equals("mushrooms") || ...){
//this way you can get one if for all cheap addons;
pizzaPrice += 2; //read below to undrstand why i would add price this way
}
和相同的检查昂贵的附加组件。
您在初始化cheapAddOns
和expensiveAddOns
时所做的操作是不正确的,我的意思是,您使用start变量来初始化它们,然后从标准输入中读取它们。毫无价值地初始化它们:
String cheapAddOns;
String expensiveAddOns;
对于此示例,您不必使用final int,最好将其初始化为普通整数,并且如果有任何陈述为true,则将其添加到该值。看起来像这样:
int pizzaPrice = 12;
int cheapAddonPrice = 2;
int expensiveAddonPrice = 3;
if(anyStatement){
pizzaPrice += 2; //2 for cheap, 3 for expensiv addon
}
System.out.println("Your pizza costs: $" + pizzaPrice)
它仅在所有便宜的附件都价格为2美元且所有昂贵的附件价格为3美元时才起作用。如果每个插件都有另一个价格,则您将需要更多的if语句来计算价格。
但是,您可以根据需要在任意数量的对帐单中计算价格并打印一次(直到仅打印价格(不包含插件列表)。
您在这里犯了很多简单的错误,所以我认为您才刚刚开始编程冒险。不要学习坏习惯,每天尝试改善代码。
答案 1 :(得分:0)
如果所有便宜的附件都具有相同的价格,则一种方法可能是:
String cheapAddOns = "Mushrooms, Tomato, ...";
int cheapPrices = 2;
System.out.println("Please enter first AddOns(Mushrooms , Tomato , Corn, Olives): ");
String cheap = s.next();
int price = pizzaPrice;
if ( cheapAddOns.indexOf(cheap) >= 0 ) {
price += cheapPrice;
}
然后使用昂贵的插件重复代码。 请注意,在调用s.next()以获得用户的下一个输入之前,需要消耗CR。