守着星空守着你
最后的打折计算浮点数直接计算有误差,所以打折后的总金额可能与手算的在精度上有误差。实际场景中一般计算金额都是用BigDecimal。然后题目的逻辑有点问题,某种商品的总价大于5000了,那这三种商品的总价也是必然大于3500,而且这两种情况的折扣是一样的。所以其实此处“三种商品总价格大于3500或者某种商品总价大于5000,则打三折”等价于“三种商品总价格大于3500打三折”。都可以不判断5000这个条件的import java.util.Scanner; public class Demo { public static void main(String[] args) { System.out.print("请依次输入三种商品的价格,以空格分隔(输入完成后按回车确认)\r\n价格:"); Scanner scanner = new Scanner(System.in); float price1 = scanner.nextFloat(); float price2 = scanner.nextFloat(); // 若此价格大于5000则3折 float price3 = scanner.nextFloat(); float sum = price1 + price2 + price3; // 商品总价格大于3500或者商品2总价大于5000 if (sum > 3500 || price2 > 5000) { System.out.println("三折,折后总结为:" + (sum * 0.3)); } else { System.out.println("八折,折后总结为:" + (sum * 0.8)); }