随机点名器:在本地文件中读取数据并实现随机点名,文件由好名网数据提供,爬取好名网的代码由上一篇博文提供,传送门:https://blog.csdn.net/qq_69957794/article/details/135118537?spm=1001.2014.3001.5502
文件数据也可以自行写入,实现班级点名。
/* * 需求:实现随机点名器 * 从本地文件下读取已经爬取好的男生女生姓名 * 格式:XXX-男-23 * 通过程序实现随机点名的功能 * 运行效果: * 第一次运行程序:随机同学姓名1(只显示名字) * 第二次运行程序:随机同学姓名2(只显示名字) * ... * */
代码实现:
package RamdomRollCaller;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
/*
* 需求:实现随机点名器
* 从本地文件下读取已经爬取好的男生女生姓名
* 格式:XXX-男-23
* 通过程序实现随机点名的功能
* 运行效果:
* 第一次运行程序:随机同学姓名1(只显示名字)
* 第二次运行程序:随机同学姓名2(只显示名字)
* ...
* */
public class RollCallerDemo1 {
public static void main(String[] args) throws IOException {
//创建对象关联本地文件name.txt
BufferedReader br = new BufferedReader(new FileReader("name.txt"));
//创建集合用于存取读到的数据,方便后续对数据的操作
ArrayList<String> nameTempList = new ArrayList<>();
String str = "";
while((str = br.readLine())!= null){
if(!str.equals("[]")){
nameTempList.add(str);
}
}
//关流
br.close();
//获取姓名
ArrayList<String> nameList = new ArrayList<>();
for (String tempName : nameTempList) {
String[] arr = tempName.split("-");
nameList.add(arr[0]);
}
//随机点名
Scanner sc = new Scanner(System.in);
System.out.println("请输入点名同学个数:");
String count = sc.nextLine();
int nameCount = Integer.parseInt(count);
//计数器,用来统计程序运行次数
int temp = 0;
while((nameCount--)!=0){
temp ++;
Collections.shuffle(nameList);
System.out.println("第"+temp+"次运行程序:随机同学姓名"+temp+"("+nameList.get(0)+")");
}
}
}
运行结果:
下面是实现随机点名的第二种方式(带有概率的随机点名器):
https://blog.csdn.net/qq_69957794/article/details/135149040?spm=1001.2014.3001.5502