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

devtools/2024/11/7 14:51:07/

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

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


案例一:简单随机点名器

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

实现步骤:

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

    java">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类来随机选择学生。我们需要生成一个随机索引,并从列表中获取对应的学生姓名:

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

    示例输出:

    随机点到的学生是:Charlie
    

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

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

实现步骤:

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

    java">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之间的随机数,然后根据该数值决定是选择男生还是女生:

    java">        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. 初始化学生列表
    首先,我们需要创建一个完整的学生列表,并设置两个列表来存储未点名和已点名的学生:

    java">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. 实现随机点名逻辑
    在循环中进行随机点名,如果所有学生都被点名,程序将提示重置并重新开始点名:

    java">        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.ppmy.cn/devtools/132031.html

相关文章

在使用Alt+Tab切换程序时 Windows 11 24H2会出现黑屏

Windows 中的 Alt-Tab 快捷键组合可帮助您在多个活动应用窗口之间循环跳转。 但是&#xff0c;在 Windows 11 24H2 更新中&#xff0c;该快捷键被弄坏了&#xff0c;如果按下组合键&#xff0c;就会触发黑屏。 虽然 Alt Tab 功能不会停止工作&#xff0c;但黑屏会持续 10 秒钟…

有Bootloader,为什么还要BROM?

有Bootloader&#xff0c;为什么还要BROM? 不少硬件平台都提供类似Boot ROM或者PBL(高通平台)固化的一段程序&#xff0c;出厂后用户一定不能修改。BROM可以引导Bootloader程序。大家知道&#xff0c;每个可启动的平台都会在存储设备&#xff0c;例如EMMC/NAND/UFS保存Bootloa…

工作管理实战指南:利用Jira、Confluence等Atlassian工具打破信息孤岛,增强团队协作【含免费指南】

如果工作场所存在超级反派&#xff0c;其中之一可能会被命名为“信息孤岛”&#xff0c;因为它们能够对公司的生产力和协作造成严重破坏。当公司决定使用太多互不关联的工具来完成工作时&#xff0c;“信息孤岛”就会出现&#xff0c;导致团队需要耗费大量时间才能就某件事情达…

LLMs之Calculate:利用大语言模型技术基于文本内容实现数字计算能力的简介、常用方法、代码实现之详细攻略

LLMs之Calculate:利用大语言模型技术基于文本内容实现数字计算能力的简介、常用方法、代码实现之详细攻略 导读:在基于大语言模型(LLM)技术实现数字计算能力的背景下,文本内容的理解和计算过程涉及多个领域的交叉技术,包括自然语言处理(NLP)、机器学习、以及数值计算。…

Caché/IRIS file2Xml 一个将文件转换成Studio导出的xml格式的工具

file2Xml 一个将文件转换成Studio导出的xml格式的工具 通过此工具可以将本地文件转换成xml格式文件&#xff0c;然后通过Studio导入到服务器中&#xff0c;而不再需要其他工具将文件传至服务器。 下面以为ensemble2016自带的一个示例界面增加背景图为例。 http://localhos…

使用C++和QT开发应用程序入门以及开发实例分享

目录 1、搭建开发环境&#xff08;VS2010和QT4.8.2&#xff09; 2、创建一个QT窗口 3、在QT窗口中添加子窗口 4、QT界面布局 5、QT信号&#xff08;SIGNAL&#xff09;和槽&#xff08;SLOT&#xff09; 6、最后 C软件异常排查从入门到精通系列教程&#xff08;专栏文章列…

力姆泰克电动缸助力农业机械装备,提高农机的自动化水平

力姆泰克电动缸作为一种先进的驱动装置&#xff0c;凭借其高精度、高效率、高可靠性等特点&#xff0c;在农业机械装备中得到了广泛应用&#xff0c;显著提高了农机的自动化水平。以下是对力姆泰克电动缸如何助力农业机械装备&#xff0c;提高农机自动化水平的详细分析&#xf…

TQZC706开发板教程:ADRV9009观测双通道接收波形

本例程使用ZC706加ADRV9009修改HDL项目&#xff0c;在vivaod中使用ila实时抓取两路接收波形。 将网盘链接中的BOO.BIN文件复制到SD卡中&#xff0c;插入开发板&#xff0c;并将开发板的启动模式设置为SD卡启动。插入电源&#xff0c;JTAG和串口。 在NO-OS的ADRV9009的项目中&am…