案例一:买飞机票
需求:
机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
机票最终优惠价格的计算方案如下:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
分析:
键盘录入机票原价、仓位类型、月份信息,将机票最终优惠价格的计算方案封装成一个方法,并调用该方法返回机票最终的优惠价格;
方法内部:判断月份是淡季还是旺季,然后再判断是头等舱还是经济舱,之后分别计算对应季节、仓位类型的机票价格优惠计算,最终将优惠价格返回
调用方法,将用户输入的机票原价、仓位类型、月份信息传递给形参
实现:
- import java.util.Scanner;
-
- public class AirTicket {
- public static void main(String[] args) {
- // 在main方法内
- // 1.创建一个键盘录入的对象,用于用户录入机票原价、仓位类型,月份信息
- Scanner sc = new Scanner(System.in);
- // 1.2用户开始进行录入,并接收录入的机票原价、仓位信息、月份信息
- System.out.println("请您输入机票原价:");
- double money = sc.nextDouble();
- System.out.println("请您输入仓位类型:");
- String airCabin = sc.next();
-
- System.out.println("请您输入月份(1-12):");
- int month = sc.nextInt();
- //3.调用方法:将录入的机票原价、仓位类型、月份信息传递给形参、输出最终结果
- System.out.println("机票优惠后的价格:"+calc(money,airCabin,month));
-
- }
- // 2.定义一个实现计算机票最终的优惠价格的方法
- // 2.1设置三个形参:double money,String airCabin,int month,用于接收用户录入的实参
- public static double calc(double money,String airCabin,int month){
- // 2.2使用if分支判断
- if (month >=5 && month <=10){
- // 判断是否是旺季录入的月份是否>=5且<=10,
-
- switch (airCabin){
- case "头等舱":
- money *=0.9;
- break;
- // 2.2是头等舱,录入的机票原价乘以0.9,等于优惠9折后的机票价格
- case "经济舱":
- money*=0.85;
- break;
- // 2.2是经济舱,录入的机票原价乘以0.85,等于优惠85折后的机票价格
- default:
- System.out.println("您输入的仓位类型有误,请重新输入");
- money = -1;
- // 如果都不是说明仓位类型录入有误,无法进行价格计算表示为-1
- }
- }else if (month == 11||month == 12 ||month >=1&&month<=4){
- // 2.2判断是否为淡季,使用switch分支判断:录入的仓位类型是头等舱还是经济舱
- switch (airCabin){
- case "头等舱":
- money *=0.7;
- break;
- // 2.2是头等舱录入的机票原价乘以0.7,等于优惠7折后的机票价格
- case "经济舱":
- money*=0.65;
- break;
- // 2.2是经济舱录入的机票原价乘以0.65,等于优惠65折后的机票价格
- default:
- System.out.println("您输入的仓位有误,请重新输入");
- money = -1;
- // 仓位有误无法进行价格计算
- }
- }else {
- System.out.println("您输入月份有误,请重新输入");
- money = -1;
- // 录入的月份小于1且大于12时说明录入的月份有误无法进行价格计算,表示为-1
- }
- return money; //2.3返回最终价格
- }
-
- }
控制台输出结果: