Java自动点名器实现案例详解

Java自动点名器实现案例详解

在教学管理中,点名是一项重要的任务。随着技术的发展,使用编程语言实现自动化的点名器不仅可以提高效率,还能增加课堂的互动性和趣味性。本文将详细介绍三个案例,分别是简单随机点名器、带有权重的随机点名器和不重复点名器,旨在帮助读者更好地理解Java编程及其应用。


案例一:简单随机点名器

需求: 在班级中有N个学生的情况下,实现一个简单的随机点名器。

实现步骤:

  1. 定义学生列表
    我们可以使用一个列表来存储学生的姓名或学号。此处使用Java的Arrays.asList()方法来创建一个不可变列表。例如:

    import java.util.List;
    import java.util.Random;public class RandomNamePicker {public static void main(String[] args) {// 定义学生列表List<String> students = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eve");
    
  2. 实现随机选择功能
    接下来,我们将利用Java的Random类来随机选择学生。我们需要生成一个随机索引,并从列表中获取对应的学生姓名:

            Random random = new Random();// 随机选择一个学生String randomStudent = students.get(random.nextInt(students.size()));System.out.println("随机点到的学生是:" + randomStudent);}
    }
    
  3. 运行程序
    当运行上述代码时,系统会随机输出一个学生的名字,实现简单的点名功能。用户每次执行程序都能看到不同的结果,增加了随机性。

    示例输出:

    随机点到的学生是:Charlie
    

案例二:带有权重的随机点名器

需求: 在随机点名时设定男生和女生的点名概率,要求70%点到男生,30%点到女生。

实现步骤:

  1. 定义男女生列表
    我们将男生和女生分别放在两个列表中。这样可以为每个性别设置不同的概率:

    import java.util.List;
    import java.util.Random;public class WeightedRandomPicker {public static void main(String[] args) {// 定义男生和女生的列表List<String> maleStudents = Arrays.asList("John", "Paul", "Mike");List<String> femaleStudents = Arrays.asList("Mary", "Lucy");
    
  2. 使用权重进行随机选择
    生成一个0到100之间的随机数,然后根据该数值决定是选择男生还是女生:

            Random random = new Random();int chance = random.nextInt(100); // 生成0到99之间的随机数String randomStudent;if (chance < 70) {// 70%概率选择男生randomStudent = maleStudents.get(random.nextInt(maleStudents.size()));} else {// 30%概率选择女生randomStudent = femaleStudents.get(random.nextInt(femaleStudents.size()));}System.out.println("随机点到的学生是:" + randomStudent);}
    }
    
  3. 运行程序
    运行程序后,学生被点到的概率就会依据设定的权重而变化。例如,男生有70%的概率被选中,女生则有30%的概率。这种实现方式使得点名更加符合实际场景。

    示例输出:

    随机点到的学生是:John
    

案例三:不重复点名器

需求: 被点到的学生不会再被点到,直到所有学生都点完,才重新开始下一轮点名。

实现步骤:

  1. 初始化学生列表
    首先,我们需要创建一个完整的学生列表,并设置两个列表来存储未点名和已点名的学生:

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Random;public class NoRepeatRandomPicker {public static void main(String[] args) {// 初始化学生列表List<String> allStudents = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eve");List<String> remainingStudents = new ArrayList<>(allStudents); // 未点名学生列表List<String> pickedStudents = new ArrayList<>(); // 已点名学生列表
    
  2. 实现随机点名逻辑
    在循环中进行随机点名,如果所有学生都被点名,程序将提示重置并重新开始点名:

            Random random = new Random();// 模拟点名过程for (int i = 0; i < 10; i++) { // 假设点名10次if (remainingStudents.isEmpty()) {remainingStudents.addAll(pickedStudents); // 重置未点名学生pickedStudents.clear(); // 清空已点名学生System.out.println("所有学生都点名完成,重启新一轮点名!");}// 随机选择未点名的学生int index = random.nextInt(remainingStudents.size());String selectedStudent = remainingStudents.get(index);// 输出点到的学生System.out.println("随机点到的学生是:" + selectedStudent);// 更新学生列表pickedStudents.add(selectedStudent);remainingStudents.remove(selectedStudent);}}
    }
    
  3. 运行程序
    每次运行程序都会随机输出学生的名字。当所有学生都被点完后,程序会提示重启新一轮点名。这样确保了每位学生不会在同一轮中被重复点到,增加了点名的公平性。

    示例输出:

    随机点到的学生是:Charlie
    随机点到的学生是:Eve
    随机点到的学生是:Alice
    所有学生都点名完成,重启新一轮点名!
    

总结

通过以上三个案例,我们分别实现了简单的随机点名器、带有权重的随机点名器和不重复点名器。这些实现不仅能提高课堂的互动性,还能增加学生的参与感。无论是简单的随机选择,还是基于权重的选择,都展示了Java编程在实际应用中的灵活性和强大能力。

ce
所有学生都点名完成,重启新一轮点名!


---### 总结通过以上三个案例,我们分别实现了简单的随机点名器、带有权重的随机点名器和不重复点名器。这些实现不仅能提高课堂的互动性,还能增加学生的参与感。无论是简单的随机选择,还是基于权重的选择,都展示了Java编程在实际应用中的灵活性和强大能力。希望这些代码示例和详细步骤能帮助你更好地理解Java编程的应用,激发你对编程的兴趣,让课堂管理变得更加高效和有趣。如果你有更多想法或改进建议,欢迎留言讨论!

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

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

相关文章

揭秘规则引擎:如何实现多版本无感切换与数据源同步

在现代业务系统中&#xff0c;规则决策引擎能够自动化处理复杂的业务逻辑。为了满足不断变化的业务需求&#xff0c;同时确保系统运行的连续性和稳定性&#xff0c;在JVS规则引擎中提供了多版本无感发布和数据源变更日志同步功能。 多版本无感发布 多版本无感发布主要适用于已…

【Python3】【力扣题】409. 最长回文串

【力扣题】题目描述&#xff1a; &#xff08;题意理解&#xff09;统计如下&#xff1a; ① 字母个数本身是偶数。 ② 字母个数是奇数&#xff0c;统计奇数中的偶数部分&#xff0c;例如&#xff1a;字母个数为3&#xff0c;统计其中的2。 ③ 中间可以有一个奇数字母。即只要有…

010 Editor下载安装和使用

010 Editor下载安装和使用 010 Editor&#xff08;也称为 SweetScape 010 Editor&#xff09;是一款功能强大的二进制文件编辑器和文本编辑器。它主要用于查看、编辑和分析各种二进制文件和文本文件&#xff0c;特别适用于处理数据恢复、磁盘编辑、编程和系统管理等领域。 1 …

【安装教程】统信UOS1070上使用vsftpd服务上传下载文件

原文链接&#xff1a;【安装教程】统信UOS1070上使用vsftpd服务上传下载文件 Hello&#xff0c;大家好啊&#xff01;今天带来一篇关于在统信UOS 1070上使用vsftpd服务实现加密文件上传和下载的文章。默认的FTP传输是不加密的&#xff0c;但在数据传输时&#xff0c;安全性尤为…

Linux之实战命令70:chcon应用实例(一百零四)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

99.9%高质量Tick数据复盘回测ea必备工具:Tick Data Suite 使用教程

Tick Data Suite 是一款高质量的99.9% Tick 数据回测工具&#xff0c;功能强大&#xff0c;适用于进行EA回测。它具有以下主要优势&#xff1a;Tick 数据占用硬盘空间较小&#xff0c;可模拟滑点和实盘延时&#xff0c;还能设置持仓过夜费和交易手续费。Tick 数据来源多样&…

算法练习:1004. 最大连续1的个数 III

题目链接&#xff1a;1004. 最大连续1的个数 III。 题目要求&#xff0c;给定一个数组&#xff0c;这个数组里面只有0或1&#xff0c;然后计算有多少个连续的1的最大长度&#xff0c;同时给了一个条件就是&#xff0c;可以把k个0变成1&#xff0c;然后来计算长度。 暴力解法&a…

Unity网络开发基础(part5.网络协议)

目录 前言 网络协议概述 OSI模型 OSI模型的规则 第一部分 物理层 数据链路层 网络层 传输层 第二部分 ​编辑 应用层 表示层 会话层 每层的职能 TCP/IP协议 TCP/IP协议的规则 TCP/IP协议每层的职能 TCP/IP协议中的重要协议 TCP协议 三次握手 四次挥手 U…

SQL,力扣题目1767,寻找没有被执行的任务对【递归】

一、力扣链接 LeetCode_1767 二、题目描述 表&#xff1a;Tasks ------------------------- | Column Name | Type | ------------------------- | task_id | int | | subtasks_count | int | ------------------------- task_id 具有唯一值的列。 ta…

JavasScript 的对象事件的处理程序

1、鼠标事件 常用的鼠标事件有MouseDown、MouseUp、MouseMove、MouseOver、MouseOut、Click、Blur及Focus等事件。 mousedown&#xff1a;按下鼠标键时触发 mouseup&#xff1a;抬起鼠标键时触发 click&#xff1a;单击鼠标时触发 dblclick&#xff1a;在同一个元素上双击鼠标…

华为云安装docker

docker_docker-compose_install: 代替官网的一键安装脚本&#xff0c;使用docker包进行离线安装 bash <(curl -sL https://raw.githubusercontent.com/1scripts/docker_docker-compose_install/main/quick_install.sh) 华为镜像&#xff1a; https://console.huaweicloud.…

如何实用穿山甲APP搭建你的广告联盟?

在当下蓬勃兴盛的移动互联网范畴&#xff0c;广告联盟穿山甲无疑堪称一个具备深远影响力的关键平台。它系由在科技领域声名远扬的字节跳动悉心打造并予以推出&#xff0c;其创建的初衷便是矢志为众多的开发者和广告主精心构筑一个高效能、精准化且极具价值的广告投放与变现服务…

【Python实战案例】爬虫项目实例(附赠源码)

文章目录 声明安装必要的库项目结构技术细节小结 声明 请您遵守网站的robots文件规定&#xff0c;本文目的只是做学习交流使用&#xff0c;包括多个模块&#xff0c;例如数据存储、日志记录、错误处理、多线程或异步请求 安装必要的库 pip install requests beautifulsoup4 sq…

PL/SQL developer debug 方法及存储过程等

文章目录 打开 PL/SQL&#xff0c;找到 fun右键 fun&#xff0c;选择【添加调试信息(U)】右键 fun&#xff0c;选择【查看(O)】在 fun 中需要调试的位置打上断点右键 fun&#xff0c;选择【测试(X)】点击执行再点击执行进入断点 执行结果 打开 PL/SQL&#xff0c;找到 fun 右键…

利用 Avalonia UI 构建 Blazor 混合应用程序

Blazor 是一个 .NET 前端框架&#xff0c;用于仅使用 .NET 技术构建 Web 应用程序。2021 年&#xff0c;Blazor 扩展到桌面端&#xff0c;推出了 Blazor Hybrid&#xff08;混合&#xff09;&#xff0c;使开发者可以在桌面平台上使用已有的技能。 Blazor 混合应用程序是传统的…

ELK-ELK基本概念_ElasticSearch的配置

文章目录 一、什么是ELK&#xff1f;有什么用&#xff1f;ELK是什么&#xff1f;ElasticsearchLogstashKibana ELK的作用 二、ElasticSearch的安装与基本配置为何需要依赖JDK&#xff1f;使用yum install java-11-openjdk和使用Oracle官网提供的jdk的rpm包安装JDK的区别 参考资…

怎么查看navicat的数据库密码

步骤1:打开navicat连接数据库工具&#xff0c;顶部的文件栏-导出结果-勾选导出密码-导出 步骤2&#xff1a;导出结果使用NotePad或文本打开&#xff0c;找到&#xff0c;数据库对应的的Password"995E66F64A15F6776“”的值复制下来 <Connection ConnectionName"…

linux驱动-i2c子系统框架学习(1)

可以将整个 I2C 子系统用下面的框图来描述&#xff1a; 可以将上面这一 I2C 子系统划分为三个层次&#xff0c;分别为用户空间、内核空间和硬件层&#xff0c;内核空间就包括 I2C 设备驱动层、I2C 核心层和 I2C 适配器驱动层&#xff0c; 本篇主要内容就是介绍 I2C 子系统框架中…

基于SSM的企业管理系统(源码+lw+调试+技术指导)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【金融风控】相关业务介绍及代码详解

金融风控相关业务介绍 【了解】项目整体介绍 1.风控业务和风控报表</span> 零售金融产品 相关的指标 风控建模流程 ​ #2.特征工程 特征构造 特征筛选 ​ 3.评分卡模型构建 逻辑回归 集成学习 XGBoost LightGBM 模型评估 ​ #4.样本不均衡问题/异常点检测 【了解】今日…