一种输入无效,其余的有效

时间:2019-09-22 16:18:41

标签: java if-statement

用户必须输入总购买金额及其年龄,然后计算最终付款。

如果总金额为$ 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。

3 个答案:

答案 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);
}