You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:36:02