java编程-策略模式

需求:
        1.机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。

        2.机票最终优惠价格的计算方案如下:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。

        计算机票优惠价格

import java.util.Scanner;// 定义舱位类型枚举
enum CabinClass {FIRST_CLASS,ECONOMY_CLASS
}// 定义价格计算策略接口
interface PricingStrategy {double calculatePrice(double basePrice);
}// 实现具体的价格计算策略
class PeakSeasonFirstClassPricing implements PricingStrategy {@Overridepublic double calculatePrice(double basePrice) {return basePrice * 0.9;}
}class PeakSeasonEconomyPricing implements PricingStrategy {@Overridepublic double calculatePrice(double basePrice) {return basePrice * 0.85;}
}class OffPeakSeasonFirstClassPricing implements PricingStrategy {@Overridepublic double calculatePrice(double basePrice) {return basePrice * 0.7;}
}class OffPeakSeasonEconomyPricing implements PricingStrategy {@Overridepublic double calculatePrice(double basePrice) {return basePrice * 0.65;}
}// 上下文类,用于设置和切换不同的策略
class PriceCalculator {private PricingStrategy strategy;public PriceCalculator(PricingStrategy strategy) {this.strategy = strategy;}public void setStrategy(PricingStrategy strategy) {this.strategy = strategy;}public double calculateFinalPrice(double basePrice) {return strategy.calculatePrice(basePrice);}
}public class Main {public static void main(String[] args) {// 输入Scanner scanner = new Scanner(System.in);double basePrice;int month;CabinClass cabinClass;// 获取月份do {System.out.print("请输入月份(1-12): ");while (!scanner.hasNextInt()) {System.out.println("请输入有效的数字!");scanner.next();}month = scanner.nextInt();} while (month < 1 || month > 12);// 获取舱位类型System.out.print("请输入舱位类型(头等舱/经济舱): ");String cabin = scanner.next().toLowerCase();cabinClass = cabin.equals("头等舱") ? CabinClass.FIRST_CLASS : CabinClass.ECONOMY_CLASS;// 获取机票原价System.out.print("请输入机票原价: ");while (!scanner.hasNextDouble()) {System.out.println("请输入有效的数字!");scanner.next();}basePrice = scanner.nextDouble();// 根据条件选择相应的价格计算策略PricingStrategy strategy;if (month >= 5 && month <= 10) {strategy = cabinClass == CabinClass.FIRST_CLASS ? new PeakSeasonFirstClassPricing() : new PeakSeasonEconomyPricing();} else {strategy = cabinClass == CabinClass.FIRST_CLASS ? new OffPeakSeasonFirstClassPricing() : new OffPeakSeasonEconomyPricing();}// 计算最终价格PriceCalculator calculator = new PriceCalculator(strategy);double finalPrice = calculator.calculateFinalPrice(basePrice);System.out.println("最终价格为: " + finalPrice);// 关闭 Scannerscanner.close();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/10596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

macOS DOSBox 汇编环境搭建

正文 一、安装DOSBox 首先前往DOSBox的官网下载并安装最新版本的DOSBox。 二、下载必备的工具包 在用户目录下新建一个文件夹&#xff0c;比如 dosbox: mkdir dosbox然后下载一些常用的工具。下载好了后&#xff0c;将这些工具解压&#xff0c;重新放在 dosbox 这个文件夹…

【基础绘图】 09.小提琴图

效果图&#xff1a; 主要步骤&#xff1a; 1. 数据准备&#xff1a;生成随机数组 2. 数据处理&#xff1a;计算四分位数、中位数、均值、最大最小值 3. 图像绘制&#xff1a;绘制小提琴图 详细代码&#xff1a;着急的直接拖到最后有完整代码 步骤一&#xff1a;导入库包及…

Redis 6.x的ACL功能

Redis ACL Redis ACL (访问控制列表) 是 Access Control List 的缩写&#xff0c;它允许某些连接在可以执行的命令和可以访问的密钥方面受到限制。它的工作方式是&#xff0c;在连接后&#xff0c;客户端需要提供 username/用户名 和有效 password/密码 来进行 authenticate/身…

作为一名新能源汽车热管理仿真工程师需要具备哪些素养与技能

作为一名新能源汽车热管理仿真工程师&#xff0c;需要具备多方面的素养与技能&#xff0c;才能胜任这一岗位的工作。从工程素养到技术技能&#xff0c;再到沟通能力和团队合作&#xff0c;以下是对这些方面的探讨。 理论知识基础 首先&#xff0c;工程素养是新能源汽车热管理仿…

SQL分库分表

一、介绍 问题分析 随着互联网及移动互联网的发展&#xff0c;应用系统的数据量也是成指数式增长&#xff0c;若采用单数据库进行数据存储&#xff0c;存在以下性能瓶颈: 1. IO瓶颈:热点数据太多&#xff0c;数据库缓存不足&#xff0c;产生大量磁盘IO&#xff0c;效率较低。…

Python 开发 框架安全:Django SQL注入漏洞测试.(CVE-2021-35042)

什么是 Django 框架 Django 是一个用 Python 编写的 Web 应用程序框架。它提供了许多工具和库&#xff0c;使得开发 Web 应用程序变得更加容易和高效。Django 遵循了“MTV”&#xff08;模型-模板-视图&#xff09;的设计模式&#xff0c;将应用程序的不同组件分离开来&#x…

【图论 回溯 广度优先搜索】126. 单词接龙 II

本文涉及知识点 图论 回溯 深度优先搜索 广度优先搜索 图论知识汇总 LeetCode 126. 单词接龙 II 按字典 wordList 完成从单词 beginWord 到单词 endWord 转化&#xff0c;一个表示此过程的 转换序列 是形式上像 beginWord -> s1 -> s2 -> … -> sk 这样的单词序…

新能源行业网间数据交换,更好用更专业的工具是什么?

新能源行业涵盖了多个方面&#xff0c;包括但不限于新能源汽车、可再生能源技术等。新能源行业发展具有重要的意义&#xff0c;新能源企业的研发数据极其重要&#xff0c;为了保障网络安全和数据安全&#xff0c;许多新能源企业采用逻辑隔离的方式进行网络隔离&#xff0c;此时…

【网络基础】网络层 之 IP协议与分片、网段划分、IP地址分类、子网掩码与路由

文章目录 网络层1. IP协议段格式1.1 分片1.2 *为什么存在分片 / 分片是什么 ?*1.3 *如何理解 / 实现 分片与组装*1.4 深入具体&#xff1a;分片 和 组装 的过程1.5 为什么不推荐 分片 2. 网段划分2.1 举例&#xff1a;国际间通信 && 国家内通信2.2 理解网段划分 3. IP…

[Kubernetes] Istio on Kubernetes 实践

文章目录 1.Kubernetes 创建2.Istio 部署2.1 下载 Istio2.2 安装 Istio 3.Istio on Kubernetes 实践3.1 部署 Bookinfo 示例应用3.2 确定入站 IP 和端口 1.Kubernetes 创建 主机名内部ip外部ipmaster192.168.66.2139.198.36.40node1192.168.66.3139.198.1.192node2192.168.66.…

传输层的端到端的流量控制和网络层的流量控制,有什么区别,他们互补在什么地方

传输层的端到端流量控制和网络层的流量控制在以下几个方面有所区别&#xff0c;并在一定程度上相互补充&#xff1a; 控制对象&#xff1a; 传输层的端到端流量控制主要关注单个会话或连接的流量。它在发送端和接收端之间进行&#xff0c;确保发送方不会发送过多的数据&#xf…

Ps 滤镜:粉笔和炭笔

Ps菜单&#xff1a;滤镜/滤镜库/素描/粉笔和炭笔 Filter Gallery/Sketch/Chalk & Charcoal 粉笔和炭笔 Chalk & Charcoal滤镜可以模拟传统的粉笔和炭笔画风格&#xff0c;通过特定的纹理和线条重绘图像的高光、中间色调和阴影区域。此滤镜非常适合于为数字图像添加手绘…

璩静是为了薅百度羊毛

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 百度副总裁璩静离职了&#xff0c;网传她的年薪是1500万&#xff0c;而璩静在4月24日注册了一个文化传媒公司&#xff0c;大家都认为璩静是在为离职做准备。但松松我认为不是。 我认为&#xff1a;璩静成立新公司是…

[力扣题解]53. 最大子数组和

题目&#xff1a;53. 最大子数组和 思路 贪心法&#xff1b; 从头到尾遍历&#xff0c;对遇见的元素求和&#xff0c;如果和<0&#xff0c;就重新开始&#xff0c;因为前一段是负数&#xff0c;对我们希望的最大的和是没有帮助的&#xff1b; 代码 // 贪心法 // 和<0…

组织机构树形列表实现

源码地址&#xff1a;https://www.lanzouw.com/itjDc1ydraof 本来上传了源码&#xff0c;但是发现只能VIP才能下载&#xff0c;所以重新上传到蓝奏云上了&#xff0c;链接如下&#xff1a; 先看下效果图&#xff1a; 可以自己写HTML来自定义每一项的内容显示&#xff0c;包括…

物联网到底物联了个啥?——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网&#xff0c;这个听起来似乎颇具科技感和未来感的词汇&#xff0c;其实早已悄然渗透到我们生活的方方面面。从智能家居到智慧城市&#xff0c;从工业自动化到医疗健康&#xff0c;物联网技术正在以其独特的魅力改变着我们的生活方式…

2024.04.30校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招&实习 | 零跑汽车校园招聘 - 三电研发专场&#xff08;内推&#xff09; 校招&实习 | 零跑汽车校园招聘 - 三电研发专场&#xff08;内推&#xff09; 2、校招丨海尔智家2…

【ruoyi】docker部署 captchaImage接口 FontConfiguration空指针异常

后台服务报错captchaImage接口空指针异常&#xff0c;无法启动项目&#xff1a; [http-nio-4431-exec-27] ERROR c.r.f.w.e.GlobalExceptionHandler - [handleRuntimeException,93] - 请求地址/captchaImage,发生未知异常.java.lang.NullPointerException: nullat sun.awt.Font…

鸿蒙开发-ArkTS语言-XML

鸿蒙开发-UI-web 鸿蒙开发-UI-web-页面 鸿蒙开发-ArkTS语言-基础类库 鸿蒙开发-ArkTS语言-并发 鸿蒙开发-ArkTS语言-并发-案例 鸿蒙开发-ArkTS语言-容器 鸿蒙开发-ArkTS语言-非线性容器 文章目录 前言 一、XML概述 二、XML生成 三、XML解析 1.解析XML标签和标签值 2.解析XML属性…

conan2 基础入门(05)-(静态库动态库)(DebugRelease)

conan2 基础入门(05)-(静态库&动态库)(Debug&Release) 文章目录 conan2 基础入门(05)-(静态库&动态库)(Debug&Release)⭐准备预备文件和Code ⭐静态库&动态库静态库动态库 ⭐Debug&ReleaseReleaseDebug END视频教学settings.yml ⭐准备 本文均在windo…