小计(Subtotal)计算逻辑错误排查及输出格式优化请求
问题修复与实现方案
1. 计算逻辑错误修正
你的代码当前执行的是花材价格 + 颜色价格 + 尺寸价格的累加逻辑,但预期需求是**(花材价格 + 颜色价格) × 尺寸价格**,这就是结果错误的核心原因——比如示例中(1.2+1.3)×7.5=18.75,而你的代码计算的是1.2+1.3+7.5=10.00,正好对应错误输出。
修改后的计算逻辑代码:
// 单独计算各部分价格 double flowerPrice = flowerChoice == 1 ? rosePrice : flowerChoice == 2 ? lilyPrice : flowerChoice == 3 ? carnationsPrice : flowerChoice == 4 ? daffodilPrice : flowerChoice == 5 ? gerberaPrice : flowerChoice == 6 ? chrysanthemumPrice : assortedPrice; double colourPrice = colourChoice == 1 ? whitePrice : colourChoice == 2 ? redPrice : colourChoice == 3 ? pinkPrice : colourChoice == 4 ? yellowPrice : colourChoice == 5 ? bluePrice : mixedPrice; double sizePrice = sizeChoice == 1 ? smallPrice : sizeChoice == 2 ? mediumPrice : largePrice; // 按照正确公式计算总金额 double subtotal = (flowerPrice + colourPrice) * sizePrice;
2. 自定义输出格式实现
要输出「所选花材 + 所选颜色 + 所选尺寸 = 总金额」的格式,需要先根据用户选择获取对应的名称文本,再拼接输出:
步骤1:获取各选项的名称文本
// 获取花材名称 String flowerName = flowerChoice == 1 ? "玫瑰" : flowerChoice == 2 ? "百合" : flowerChoice == 3 ? "康乃馨" : flowerChoice == 4 ? "水仙花" : flowerChoice == 5 ? "非洲菊" : flowerChoice == 6 ? "菊花" : "混合花材"; // 获取颜色名称 String colourName = colourChoice == 1 ? "白色" : colourChoice == 2 ? "红色" : colourChoice == 3 ? "粉色" : colourChoice == 4 ? "黄色" : colourChoice == 5 ? "蓝色" : "混合颜色"; // 获取尺寸名称 String sizeName = sizeChoice == 1 ? "小号" : sizeChoice == 2 ? "中号" : "大号";
步骤2:按格式输出
System.out.printf("%s + %s + %s = £%.2f\n", flowerName, colourName, sizeName, subtotal);
完整代码片段
// 花材相关 double flowerPrice = flowerChoice == 1 ? rosePrice : flowerChoice == 2 ? lilyPrice : flowerChoice == 3 ? carnationsPrice : flowerChoice == 4 ? daffodilPrice : flowerChoice == 5 ? gerberaPrice : flowerChoice == 6 ? chrysanthemumPrice : assortedPrice; String flowerName = flowerChoice == 1 ? "玫瑰" : flowerChoice == 2 ? "百合" : flowerChoice == 3 ? "康乃馨" : flowerChoice == 4 ? "水仙花" : flowerChoice == 5 ? "非洲菊" : flowerChoice == 6 ? "菊花" : "混合花材"; // 颜色相关 double colourPrice = colourChoice == 1 ? whitePrice : colourChoice == 2 ? redPrice : colourChoice == 3 ? pinkPrice : colourChoice == 4 ? yellowPrice : colourChoice == 5 ? bluePrice : mixedPrice; String colourName = colourChoice == 1 ? "白色" : colourChoice == 2 ? "红色" : colourChoice == 3 ? "粉色" : colourChoice == 4 ? "黄色" : colourChoice == 5 ? "蓝色" : "混合颜色"; // 尺寸相关 double sizePrice = sizeChoice == 1 ? smallPrice : sizeChoice == 2 ? mediumPrice : largePrice; String sizeName = sizeChoice == 1 ? "小号" : sizeChoice == 2 ? "中号" : "大号"; // 计算与输出 double subtotal = (flowerPrice + colourPrice) * sizePrice; System.out.printf("%s + %s + %s = £%.2f\n", flowerName, colourName, sizeName, subtotal);
内容的提问来源于stack exchange,提问作者Timski
相关产品推荐
相关产品推荐

