41-Java编程案例一:买飞机票

这个博客提供了一个Java编程案例,旨在复习和巩固基础编程知识,如变量、运算符、流程控制和方法。案例涉及计算机票优惠价格,根据输入的月份和仓位类型(头等舱或经济舱),在旺季和淡季分别给出不同折扣。通过这个案例,作者强调了编程思维的培养,提倡通过模仿和大量练习来提升编程能力。
摘要由CSDN通过智能技术生成

编程案例:

一、目的

  • 复习前半段课程学习的Java编程知识,能够使用所学的知识解决问题,提升同学们的编程能力。

二、涉及到的知识点

  • 变量、数组。
  • 运算符:基本运算符、关系运算符、逻辑运算符…
  • 程序流程控制:if、switch; for、while; 死循环、循环嵌套。
  • 跳转关键字:break、continue、return。
  • 方法

三、编程思维

  • 使用所学的Java技术解决问题的思维方式和编写代码实现出来的能力。

四、关于提升编程思维和编程能力的建议

  • 编程思维和编程能力不是一朝一夕就可以形成的,需要时间的沉淀和大量练习。
  • 前期:先模仿;后期:再创新
  • 具体实施:勤于练习代码、勤于思考、熟能生巧

案例一:买飞机票

  • 需求:

    • 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
    • 机票最终优惠价格的计算方案如下:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
  • 分析:

    • 键盘录入机票原价、仓位类型、月份信息,将机票最终优惠价格的计算方案封装成一个方法,并调用该方法返回机票最终的优惠价格;
    • 方法内部:判断月份是淡季还是旺季,然后再判断是头等舱还是经济舱,之后分别计算对应季节、仓位类型的机票价格优惠计算,最终将优惠价格返回
    • 调用方法,将用户输入的机票原价、仓位类型、月份信息传递给形参
  • 实现:


  1. 在main方法内:

     (1.1) 创建一个键盘录入的对象,用于用户录入机票原价、仓位类型、月份信息

     (1.2) 用户开始录入,并接收录入的机票原价、仓位类型、月份信息

  2. 定义机票最终优惠价格的计算方法calc:

     (2.1) 设置三个形参:doble money, String type, int month,用于接收用户录入的实参:机票原价、仓位类型、月份信息

     (2.2) 使用if分支判断:

     ​	(1) 录入的月份是否 >=5 且 <=10,是则判断为旺季

     ​			(2.2.1) 使用switch分支判断:

     ​					(1) 录入的仓位类型是头等舱还是经济舱

     ​							是头等舱,录入的机票原价 乘以 0.9 等于 优惠9折后的机票价格

     ​							是经济舱,录入的机票原价 乘以 0.85 等于 优惠8.5折后的机票价格

     ​							如果都不是,说明仓位类型录入有误~,无法进行价格计算,表示为 -1

     ​	(2) 录入的月份是否 ==11 或 ==12 或 >=1 且 <=4,是则判断为淡季

     ​			(2.2.2) 使用switch分支判断:

     ​					(1) 录入的仓位类型是头等舱还是经济舱

     ​							是头等舱,录入的机票原价 乘以 0.7 等于 优惠7折后的机票价格

     ​							是经济舱,录入的机票原价 乘以 0.65 等于 优惠6.5折后的机票价格

     ​							如果都不是,说明仓位类型录入有误~,无法进行价格计算,表示为 -1

     ​	(3) 录入的月份小于1 且 大于12时,说明录入的月份有误~,无法进行价格计算,表示为-1

     (2.3) 返回最终价格

  3. 在main方法内:

     (3.1) 调用方法:将录入的机票原价、仓位类型、月份信息传递给形参,输出最终价格
package com.app.demo;

import java.util.Scanner;

/**
    案例一:买飞机票
     - 需求:
         - 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
         - 机票最终优惠价格的计算方案如下:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。

     - 分析:
         - 键盘录入机票原价、仓位类型、月份信息,将机票最终优惠价格的计算方案封装成一个方法,并调用该方法返回机票最终的优惠价格;
         - 方法内部:判断月份是淡季还是旺季,然后再判断是头等舱还是经济舱,之后分别计算对应季节、仓位类型的机票价格优惠计算,最终将优惠价格返回
         - 调用方法,将用户输入的机票原价、仓位类型、月份信息传递给形参
 */
public class Test1 {
    public static void main(String[] args) {
        // 1. 在main方法内:
        // (1.1) 创建一个键盘录入的对象,用于用户录入机票原价、仓位类型、月份信息
        Scanner sc = new Scanner(System.in);

        // (1.2) 用户开始录入,并接收录入的机票原价、仓位类型、月份信息
        System.out.println("请您输入机票原价:");
        double money = sc.nextDouble();

        System.out.println("请您输入仓位类型:");
        String type = sc.next();

        System.out.println("请您输入月份(1-12):");
        int month = sc.nextInt();

        // 3. 在main方法内:
        // (3.1) 调用方法:将录入的机票原价、仓位类型、月份信息传递给形参,输出最终价格
        System.out.println("机票优惠后的价格:" + calc(money, type, month));
    }


    // 2. 定义机票最终优惠价格的计算方法calc:
    // (2.1) 设置三个形参:doble money, String type, int month,用于接收用户录入的实参:机票原价、仓位类型、月份信息
    public static double calc(double money, String type, int month) {
        // (2.2) 使用if分支判断:
        if (month >= 5 && month <=10) { // (1) 录入的月份是否 >=5 且 <=10,
            // 是则判断为旺季
            // (2.2.1) 使用switch分支判断:
            switch (type) { // (1) 录入的仓位类型是头等舱还是经济舱
                // 是头等舱,录入的机票原价 乘以 0.9 等于 优惠9折后的机票价格
                case "头等舱":
                    money *= 0.9;   // 等价于 money = money * 0.9
                    break;
                // 是经济舱,录入的机票原价 乘以 0.85 等于 优惠8.5折后的机票价格
                case "经济舱":
                    money *= 0.85;  // 等价于 money = money * 0.85
                    break;
                // 如果都不是,
                default:
                    // 说明仓位类型录入有误~,
                    System.out.println("您输入的仓位类型有误~");
                    // 无法进行价格计算,表示为 -1
                    money = -1;
            }
        } else if (month == 11 || month == 12 || month >= 1 && month <= 4) {  // (2) 录入的月份是否 ==11 或 ==12 或 >=1 且 <=4,
            // 是则判断为淡季
            // (2.2.2) 使用switch分支判断:
            switch (type) { // (1) 录入的仓位类型是头等舱还是经济舱
                // 是头等舱,录入的机票原价 乘以 0.7 等于 优惠7折后的机票价格
                case "头等舱":
                    money *= 0.7;
                    break;
                // 是经济舱,录入的机票原价 乘以 0.65 等于 优惠6.5折后的机票价格
                case "经济舱":
                    money *= 0.65;
                    break;
                // 如果都不是,
                default:
                    // 说明仓位类型录入有误~,
                    System.out.println("您输入的仓位类型有误~");
                    // 无法进行价格计算,表示为 -1
                    money = -1;
            }
        } else {// (3) 录入的月份小于1 且 大于12时,
            // 说明录入的月份有误~,
            System.out.println("您输入月份有误~");
            // 无法进行价格计算,表示为-1
            money = -1;
        }

        // (2.3) 返回最终价格
        return money;
    }
}
测试1:旺季头等舱机票价格计算
-------------------------
请您输入机票原价:
1000
请您输入仓位类型:
头等舱
请您输入月份(1-12):
5
机票优惠后的价格:900.0


测试2:旺季经济舱机票价格计算
-------------------------
请您输入机票原价:
1000
请您输入仓位类型:
经济舱
请您输入月份(1-12):
10
机票优惠后的价格:850.0


测试3:淡季头等舱机票价格计算
-------------------------
请您输入机票原价:
1000
请您输入仓位类型:
头等舱
请您输入月份(1-12):
11
机票优惠后的价格:700.0


测试4:淡季经济舱机票价格计算
-------------------------
请您输入机票原价:
1000
请您输入仓位类型:
经济舱
请您输入月份(1-12):
4
机票优惠后的价格:650.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值