Java重修第三天—“方法“的案例练习

案例一:买飞机票

题目

用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折。11月到来年4月为淡季,头等舱7折,经济舱6.5折请开发程序计算出用户当前机票的优惠价。

分析

本节重点是对方法的练习,因此需要确定

1、方法是否需要接收数据?
2、方法是否需要返回数据
3、方法逻辑结构如何写呢?

第一个问题:我们需要接收机票原价、当前月份和仓位类型。
第二个问题:需要返回计算出的机票优惠价。
第三个问题:用if和switch组合即可

代码

public class Example_03 {public static void main(String[] args) {int month = 5;double money = 547;String type = "头等舱";money = calPrice(money, month, type);System.out.println("飞机票的优惠价为:" + money);}private static double calPrice(double money, int month, String type) {// 旺季if (month <= 10 && month >= 5) {switch (type) {case "头等舱":money = money * 0.9;break;case "经济舱":money = money * 0.85;break;}} else {// 淡季switch (type) {case "头等舱":money = money * 0.7;break;case "经济舱":money = money * 0.65;break;}}return money;}
}

案例二:生成验证码

题目

在登陆时候一般需要填写验证码,验证码正确后才能进行登录,验证码一般包含数字和大小写字母。

分析

输入:生成验证码个数

输出:字符串类型的验证码

代码

import java.util.Random;public class Example_03 {public static void main(String[] args) {int len = 4;String code = getCode(len);System.out.println("生成的验证码为:" + code);}private static String getCode(int len) {Random r = new Random();String code = "";for (int i = 0; i < len; i++) {int type = r.nextInt(3);switch (type){case 0:code += r.nextInt(10);break;case 1:// A - Z : 65 + 25code += (char) (r.nextInt(25) + 65);break;case 2:// a - z : 97 + 25code += (char) (r.nextInt(25) + 97);break;}}return code;}
}

案例三:评委打分

题目

某歌唱比赛,需要开发一个系统:可以录入 � 个评委的打分,录入完毕,去掉最大值和最小值后计算平均分作为选手得分。

分析

1、评委的分数是后期录入的,一开始不知道具体分数,因此需要定义一个动态数组。 2、由于分数是手动录入的,因此需要使用Scanner读取评分。

代码

import java.text.DecimalFormat;
import java.util.Scanner;public class Example_03 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入评委的人数:");int n = sc.nextInt();double[] scores = new double[n];for (int i = 0; i < scores.length; i++) {System.out.println("请输入第" + (i + 1) + "个评委的评分:");scores[i] = sc.nextDouble();}getScore(scores);}private static void getScore(double[] scores) {double max = scores[0];int indexMax = 0;for (int i = 1; i < scores.length; i++) {if (scores[i] > max ){max = scores[i];indexMax = i;}}double min = scores[0];int indexMin = 0;for (int i = 1; i < scores.length; i++) {if (scores[i] < min ){min = scores[i];indexMin = i;}}int sum = 0;for (int i = 0; i < scores.length; i++) {if (i == indexMax || i == indexMin) {continue;}sum += scores[i];}DecimalFormat df = new DecimalFormat("#.00");System.out.println(df.format(sum/(scores.length-2)));
//        return df.format(sum/(scores.length-2));}}

案例四:发红包

案例

过年微信群里面发起了抢红包活动,分别有:9、666、188、520、99999五个红包。请模拟其他人来抽奖,按照先来先得,随机抽取,抽完即止,注意:一个红包只能被抽一次,先抽或后抽哪一个红包是随机的,示例如下(不一定是下面的顺序)

分析

1、如何确保每个红包只能抽一次;

2、如何保证随机抽取;

3、如何确保抽完后结束活动。

其实很简单,只需要将数组随机打乱就行了,然后一次输出即可。

代码

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;public class Example_03 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入抽取红包的个数:");int n = sc.nextInt();ArrayList<Integer> redBug = new ArrayList<>();for (int i = 0; i < n; i++) {System.out.println("请输入第" + (i+1) + "个红包的金额");redBug.add(sc.nextInt());}// 打乱数组顺序Collections.shuffle(redBug);int num = 0;while (++num <= n){System.out.print("请输按任意键获取红包:");sc.next();System.out.println("你获得的红包金额为:" + redBug.get(num-1));}System.out.println("红包领取完毕!");}
}

希望多点赞收藏关注,评论或私信交流!~

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

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

相关文章

首次引入大模型!Bert-vits2-Extra中文特化版40秒素材复刻巫师3叶奈法

Bert-vits2项目又更新了&#xff0c;更新了一个新的分支&#xff1a;中文特化&#xff0c;所谓中文特化&#xff0c;即针对中文音色的特殊优化版本&#xff0c;纯中文底模效果百尺竿头更进一步&#xff0c;同时首次引入了大模型&#xff0c;使用国产IDEA-CCNL/Erlangshen-Megat…

SpringBoot基于哨兵模式的Redis(7.2)集群实现读写分离

文章目录 一、前提条件二、SpringBoot访问Redis集群1. 引入依赖2. yaml配置3. 设置读写分离4. 简单的controller 三、运行四、测试1. 写2. 读3. 额外测试 环境 docker desktop for windows 4.23.0redis 7.2Idea 一、前提条件 先根据以下文章搭建一个Redis集群 Docker-Compo…

竞赛练一练 第24期:NOC大赛每日一练,scratch题目刷题第3天,包含答案解析

023年NOC大赛创客智慧编程赛项图形化复赛模拟题一,包含答案解析 本次题目来源:NOC 大赛创客智慧编程赛项图形化复赛模拟题(一) 第一题: 制作一个生日贺卡小程序. 1.点击绿旗后蛋糕出现在 (0,-80) 的位置,大小为 100,造型为 cake-b2.当碰到鼠标指针时,将造型切换为 cak…

odoo16 连接postgresql错误

odoo16 连接postgresql错误 odoo16 用odoo15的环境出错&#xff0c;看到是psycopg2.OperationalError分析是postgresql版本问题&#xff0c;安装了13版本&#xff0c;还是出错&#xff0c;多版本共存问题如下&#xff1a; Traceback (most recent call last):File "D:\o…

MyBatis-Plus框架学习笔记

先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;❤️ ❤️ ❤️ 文章码字不易&#xff0c;如果喜欢可以关注我哦&#xff01; ​如果本篇内容对你有所启发&#xff0c;欢迎访问我的个人博客了解更多内容&#xff1a;链接地址 MyBatisPlus &#xff08;简称…

时序分解 | Matlab实现CPO-VMD基于冠豪猪优化算法(CPO)优化VMD变分模态分解时间序列信号分解

时序分解 | Matlab实现CPO-VMD基于冠豪猪优化算法(CPO)优化VMD变分模态分解时间序列信号分解 目录 时序分解 | Matlab实现CPO-VMD基于冠豪猪优化算法(CPO)优化VMD变分模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 【原创】CPO-VMD【24年新算法…

晶振老化和晶振引脚氧化的原因与影响

相信大部分的客户都会遇到晶振老化和晶振引脚氧化&#xff0c;而很多新手也难民啊会混淆晶振老化和晶振引脚样话这两个概念&#xff0c;也不理解。那么接下来&#xff0c;晶发给大家详细讲解&#xff0c;这两种情况怎么发生以及如何避免此类情况发生&#xff0c;保护我们的晶振…

【Java集合篇】为什么HashMap的Cap是2^n,如何保证?

为什么HashMap的Cap是2^n&#xff0c;如何保证&#xff1f; ✔️目录✔️ 为什么是2 ^ n ?✔️为什么 X %2^n X & (2^n - 1) ? ✔️如何保证✔️初始化时期保证✔️扩容时期保证 ✔️目录 ✔️ 为什么是2 ^ n ? HashMap是通过 (table.length - 1) & (key.hashCode …

【AIGC-图片生成视频系列-7】MoonShot:实现多模态条件下的可控视频生成和编辑

目录 一. 贡献概述 二. 方法详解​编辑 三. Zero-Shot主题定制视频生成 四. 文本到视频生成 五. 直接使用图像ControlNet 六. 图像动画比较 七. 视频编辑 八. 针对视频生成中多模态 Cross-Attn的消融实验 九. 对视频生成中多模态 Cross-Attn的消融实验 十. 论文 十一…

java数据结构与算法刷题-----LeetCode62. 不同路径

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

强化学习1——多臂老虎机(上)

在强化学习中&#xff0c;关注智能体在与环境的交互中学习&#xff0c;成为试错型学习。多臂老虎机不存在状态信息&#xff0c;只有动作和奖励&#xff0c;是最简单的“和环境交互中学习“。 什么是多臂老虎机 老虎机_百度百科 (baidu.com) 多臂老虎机即有多个摇杆的老虎机&a…

[python]gym安装报错ERROR: Failed building wheel for box2d-py

报错截图&#xff1a; box2d是一个游戏领域的2D图形C引擎&#xff0c;用来模拟2D刚体物体运动和碰撞。 swig是一个将c/c代码封装为Python库的工具&#xff08;是Python调用c/c库的一种常见手段&#xff09;&#xff0c;所以在运行时box2d会依赖到swig。而swig并不是一个python库…