用户必须输入总购买金额及其年龄,然后计算最终付款。
如果总金额为$ 100或更多,则总价可享受20%的折扣。如果年龄在65岁以上,则总价可享受10%的折扣。
double discount1 = 0.10;
double discount2 = 0.20;
double totalPrice = 0.0;
double finalPrice = 0.0;
System.out.print("Enter total amount: ");
double purchase = input.nextDouble();
System.out.print("Enter age: ");
int age = input.nextInt();
if (purchase >= 100) {
totalPrice = purchase * discount2;
finalPrice = purchase - totalPrice;
System.out.print("The final amount is $" + finalPrice);
}
else if (purchase < 100 && age < 65) {
System.out.println("The final amount is $" + purchase);
}
else if (age >= 65) {
totalPrice = purchase * discount1;
finalPrice = purchase - totalPrice;
System.out.print("The final amount is $" + finalPrice);
}
用户将输入200作为总数,输入75作为年龄。输出应该是$ 140.00。但是,我收到的输出为$ 160.00。
答案 0 :(得分:1)
第一个if语句将首先执行。因为价格高于100。所以其他语句将不会执行。尝试更改if表达式,因为这就是为什么它不能提供您期望的结果的问题
答案 1 :(得分:1)
我的方法是将所有折扣加在一起,然后在末尾相乘一次。
如果需要,您可以添加其他折扣
double totalDiscount = 0.0;
if (purchase >= 100) {
totalDiscount += discount2;
}
if (age >= 65) {
totalDiscount += discount1;
}
totalPrice = purchase * (1.0 - totalDiscount);
System.out.print("The final amount is $" + totalPrice);
答案 2 :(得分:0)
您需要更改以下代码,
因为当价格大于100时,如果区块被首先运行,并且不会进入最后一个区块。
所以请按照以下方式进行更改:-
if (purchase >= 100 && age < 65) {
totalPrice = purchase * discount2;
finalPrice = purchase - totalPrice;
System.out.print("The final amount is $" + finalPrice);
}
else if (purchase < 100 && age < 65) {
System.out.println("The final amount is $" + purchase);
}
else if (purchase < 100 &&age >= 65) {
totalPrice = purchase * discount1;
finalPrice = purchase - totalPrice;
System.out.print("The final amount is $" + finalPrice);
}
else if (age >= 65) {
totalPrice1 = purchase * discount2;
totalPrice = purchase * discount1;
finalPrice = purchase - totalPrice - totalPrice1 ;
System.out.print("The final amount is $" + finalPrice);
}