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 + 25
                    code += (char) (r.nextInt(25) + 65);
                    break;
                case 2:
                    // a - z : 97 + 25
                    code += (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("红包领取完毕!");
    }
}

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

内核线程创建-kthread_create

文章参考Linux内核线程kernel thread详解 - 知乎 大概意思就是早期创建内核线程&#xff0c;是交由内核处理&#xff0c;由内核自己完成&#xff08;感觉好像也不太对呢&#xff09;&#xff0c;创建一个内核线程比较麻烦&#xff0c;会导致内核阻塞。因此就诞生了工作队列以及…

美格智能5G RedCap模组SRM813Q通过广东联通5G创新实验室测试认证

近日&#xff0c;美格智能5G RedCap轻量化模组SRM813Q正式通过广东联通5G创新实验室端到端的测试验收&#xff0c;获颁测评证书。美格智能已连续通过业内两家权威实验室的测试认证&#xff0c;充分验证SRM813Q系列模组已经具备了成熟的商用能力&#xff0c;将为智慧工业、安防监…

docker - 常用容器部署命令大全(MySQL、Redis、RabbitMQ、ES、Kibana、Nacos、Sentinel)

目录 一、常用容器运行指令 MySQL Redis RabbitMQ ElasticSearch & kibana Nacos Sentinel 一、常用容器运行指令 MySQL docker run -d --name mysql -p 3306:3306 -e TZAsia/Shanghai -e MYSQL_ROOT_PASSWORD1111 mysql:5.7 -e TZAsia/Shanghai&#xff1a;指定…

听GPT 讲Rust源代码--compiler(26)

File: rust/compiler/rustc_target/src/abi/call/mips.rs 在Rust源代码中的rust/compiler/rustc_target/src/abi/call/mips.rs文件是关于MIPS架构的函数调用ABI(Aplication Binary Interface)定义。ABI是编程语言与底层平台之间的接口规范&#xff0c;用于定义函数调用、参数传…

centos7部署minio单机版

一、目标 在centos7上部署minio单机版 二、centos7部署minio 1、下载minio mkdir /usr/local/minio cd /usr/local/minio wget https://dl.minio.io/server/minio/release/linux-amd64/minio chmod x minio 2、新建minio存储数据的目录 mkdir -p /data/minio/data3、新建…

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

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

外包干了1个月,技术退步一大半。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

FFmpeg读取Assets资源文件

在Android开发中我们经常把原生资源文件放在assets目录下以供需要时读取&#xff0c;通过API提供的resources.assets.open(filename)/openFd(filenam)方法可以非常方便获得InputStream或FileDescriptor&#xff08;文件标识符&#xff09;&#xff0c;但是在使用FFmpeg读取Asse…

Keil使用手册

文章目录 1 设置1.1 背景1.2 Project窗口显示.h文件1.3 注释1.4 Project窗口消失TAB转空格的设置keilsourceInsight 显示cannot evaluate普通局部变量静态全局变量静态局部变量 2 报错与解决2.1 warning&#xff1a;#1-D last line of file ends without anewline2.2 中文乱码 …

13. 强化学习编程实验1-在格子世界中寻宝(1)

文章目录 1.实验目的2.任务描述3.任务分析3.1 待求问题是多步决策问题否3.2 问题求解过程是一个马尔科夫决策过程3.3 状态空间S的确定3.4 动作空间A的确定3.5 状态转移概率P的确定3.6 立即回报R的确定3.7 折扣 γ \gamma γ的确定 4. 编程架构4.1 程序中有哪些对象和类4.2 环境…

Python中的@abstractmethod

abstractmethod 是 Python 中 abc 模块&#xff08;Abstract Base Classes&#xff09;提供的一个装饰器&#xff0c;用于声明抽象方法。抽象方法是指在抽象类中声明但没有提供具体实现的方法&#xff0c;而是由其子类提供具体实现。 使用 abstractmethod 装饰器可以使得子类在…

ES -极客学习

Elasticsearch 简介及其发展历史 起源 Lucene 于 Java 语言开发的搜索引擎库类创建于 1999 年&#xff0c;2005 年成为 Apache 顶级开源项目Lucene 具有高性能、易扩展的优点Lucene 的局限性 只能基于 Java 语言开发类库的接口学习曲线陡峭原生并不支持水平扩展原生并不支持水…

TypeScript 从入门到进阶之基础篇(三) 元组类型篇

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇 持续更新中… 文章目录 …

【编译原理】期末预习PPT后三章笔记+LL(1) II

继续预习O.o 从这一章开始看自己班发的 PPT 了 LL(1)的部分因为班里发了所以又看了一遍hhh感觉比之前那个清楚一点 目录 I. 自顶向下 一、概念&#xff08;看一眼&#xff09; 1、语法分析的两大类分析方法 2、算法基本思想 3、自顶向下介绍 1&#xff09;一般过程 2&a…

初识大数据,一文掌握大数据必备知识文集(12)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

求实创新 不断探索 浙江移动基于亚信科技AntDB数据库率先完成CRM系统全域改造

12日20日&#xff0c;中国信息通信研究院&#xff08;简称&#xff1a;信通院&#xff09;和中国通信标准化协会大数据库技术推进委员会&#xff08;CCSA TC601&#xff09;共同组织的2023年大数据库“星河&#xff08;Galaxy&#xff09;”案例评选结果发布。中国移动通信集团…

k8s声明式资源管理

三种常见的项目发布方式 1、蓝绿发布 2、金丝雀发布&#xff08;灰度发布&#xff09; 3、滚动发布 应用程序升级&#xff0c;面临的最大的问题是新旧业务之间的切换&#xff0c;立项-----定稿------需求发布-----开发------测试------发布&#xff0c;测试之后上线&#x…

YOLOv5改进 | Neck篇 | 利用Damo-YOLO的RepGFPN改进特征融合层

一、本文介绍 本文给大家带来的改进机制是Damo-YOLO的RepGFPN(重参数化泛化特征金字塔网络),利用其优化YOLOv5的Neck部分,可以在不影响计算量的同时大幅度涨点(亲测在小目标和大目标检测的数据集上效果均表现良好涨点幅度超级高!)。RepGFPN不同于以往提出的改进模块,其…

2024CISA开门红,凌晨通过

祝各位新年快乐&#xff0c;万事顺遂 听说最近it内审有很多甲方开始裁员&#xff0c;为了防止波及到各位&#xff0c;想必各位也在考虑考取证书提高自己的权重&#xff0c;就算后面波及到了自己&#xff0c;去换工作的时候也会快人一步 但是大家都知道&#xff0c;最近都忙得…