重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
最简单的一个,你把所有名字存进一个数组,下面是关键代码
成都创新互联成立与2013年,先为广安等服务建站,广安等地企业,进行企业商务咨询服务。为广安企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
String[] nameList={"张三","李四","王五"......};//名单全部写上去就可以了
int rdmNum=(int)(Math.random()*nameList.length)//随即生成0---“总人数-1”的数字,正好对应数组的索引
System.out.println(nameList[ramNum]);//输出对应的人名
简单吗?关键代码我都给写出来了哦,用小软件把它生成一个EXE文件就可以用了。
//首先我们可以先把名字搞成一个数组,或者List都是可以的。
String[] arr = {"张三","李四","王五","xxx"....};
String random = arr[new Random().nextInt(arr.size())];
System.out.println("随机名字为:"+random);
按照你第2点描述,你仅仅是想实现随即顺序点名而已,并不是随即点名。
我给你个解决方案:
在每次点中一名学生后,将java0803_students.txt文件中做个标示,表示该学生已经在本轮点名中被点过。
直到所有学生都点到后情况这个表示,准备下一轮点名做标记。
下面我给你一段伪代码,包含了 random 的使用方法:
public class CallStudents(){
private static Random random = new Random();
public void call(){
// 重新设置学生被点名的标示(根据点名情况)
reset();
long value = -1;
while (true) {
value = random.nextInt(maxValue + 1); // maxValue 是你当前有学生的最大数目
//在这里读取当前随即号对应的学生记录
String student = getStudentByID(value);
//判断该学生是否被点过名
if(!checkCalled(student)){
// 设置已经点过名
setCalled(student);
// 在控制台上显示被点名的学生信息
system.out.println(student);
// 结束循环
break;
}
}
}
private String getStudentByID(long id){
// 这个是读取文件,需要你自己实现的
// 返回 java0803_students.txt 文件中对应的学生记录
}
private boolean checkCalled(String student){
// 至于是什么样的规则,有你自己定义
// 我这里给你举个例子
// 如果这条学生记录中包含 一个字符为 called 的话,表明这名学生被点过名
if(student.indexOf("called") != -1){
retrn true;
}
return false;
}
private void setCalled(String student){
// 至于是什么样的规则,有你自己定义
// 我这里给你举个例子
// 设置学生已被点名
student += "_called";
// 将这个值重新写回到你的java0803_students.txt 文件中,覆盖愿信息!
}
private void reset(){
// 判断是否所有学生都被点过名,如果点过名,清空所有学生被点名的标记
// 这个实现有你自己定义,
// 这里我给你举个例子
// 读取文件,判断每一个学生信息是否都标有 called
// 如果都有,执行删除所有 called 的操作,并保存文件。
// 如果只有部分没有,则表明本轮点名没有结束,不做任何操作。
}
public static void main(String[] args){
String con = // 接受控制台信息
if(con.equals("y")){
CallStudents call = new CallStudents();
call.call();
}
if(con.equals("n")){
// 结束程序
}
}
}