Java如何将parkingPrice方法的price值传递到其他方法执行减法操作
实现步骤与修正代码
一、原代码存在的问题
parkingPrice方法的入参price无实际作用:方法内部会根据停车时长重新给price赋值,不需要外部传入calculate方法中未初始化price就直接作为参数传入,会直接编译报错- 原
parkingPrice的分支判断中存在冗余条件,且无效输入场景没有明确返回值,容易出现逻辑错误
二、修正后的完整实现
1. 修正parkingPrice方法
// 移除无用入参,方法内部直接计算基础停车费 public static double parkingPrice(){ int hours = inputInt("How many hours would you like to park? from 1 hour to 8 hours. "); double price = 0.0; if(hours>=7 && hours<=8){ price = 5.50; } else if (hours >=5 && hours<=6){ price = 4.50; } else if (hours >=2 && hours<=4){ price = 4.00; } else if (hours == 1) { price = 3.00; } else { System.out.println("Unvalid number please enter between 1 and 8."); // 无效输入返回负数值作为标记,后续判断用 return -1; } return price; }
2. 新增两个减法方法
// 停车费减3 public static double minusThree(double price){ return price - 3; } // 停车费减4 public static double minusFour(double price){ return price - 4; }
3. 完善calculate方法实现逻辑
public static void calculate(){ // 先调用parkingPrice获取基础停车费 double originPrice = parkingPrice(); // 先判断输入是否有效 if(originPrice < 0){ return; } // 获取用户选择,inputInt是你原有代码使用的输入工具,直接复用即可 int choice = inputInt("请选择优惠:1 减3元 2 减4元"); double finalPrice = 0.0; if(choice == 1){ finalPrice = minusThree(originPrice); } else if(choice == 2){ finalPrice = minusFour(originPrice); } else { System.out.println("无效选择,无优惠"); finalPrice = originPrice; } System.out.println("最终停车费为:" + finalPrice); }
三、逻辑说明
- 不需要给
parkingPrice传参数,直接调用它就可以拿到计算好的基础停车费 - 拿到基础停车费之后,根据用户的选择,把基础停车费作为参数传给对应的减法方法,就能得到优惠后的价格
- 所有对
price的计算都是基于parkingPrice返回的结果传递的,完全符合需求
内容的提问来源于stack exchange,提问作者box12344321
相关产品推荐
相关产品推荐

