7条回答 默认 最新
- 编程爱好者熊浪 2017-02-11 05:49关注
如果每查一个学生就和数据库有一次交互,首先效率会慢很多,而且很耗性能,而且你随机是不是可能还会查到重复的,这时候你是不是每次又要对比下前面是不是已经安排过该学生。
直接查出所有的学生放入一个数组里面,之后对这个数组进行操作public static void main(String[] args) {
String[] students=new String[63504];
for (int i = 0,len=students.length; i < len; i++) {
students[i]=i+"**";
}
int randow=0,lens=30,len=0;
if(students.length%30==0){//定义需要多少个教室,是30的倍数就是学生数/30,如果不是就是/30+1
len=students.length/30;
}else{
len=students.length/30+1;
}
List list=new ArrayList();
for (int i = 1; i <= len; i++) {
if(i==len){//最后一个考场需要多少个位置,其余的都是30个位置。
lens=students.length%30;
}
for (int j = 1; j <= lens; j++) {//一个for循环获取需要多少个学生
do{
randow=(int)(Math.random()*students.length);//获取一个大于等于0小于63504的int类型的随机数
}while("-1".equals(students[randow]));//跳出循环
list.add(students[randow]+"\t"+"试室号:\t"+i+"\t座位号:\t"+j+"\t准考证号:\t"+(i-1)*30+j);
students[randow]="-1";//把该同学信息赋值为"-1",保证下次不会筛选中该学生。
}
}
for (int i = 0,size=list.size(); i < size; i++) {
System.out.println(list.get(i));
}
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥35 平滑拟合曲线该如何生成
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 自己瞎改改,结果现在又运行不了了
- ¥15 链式存储应该如何解决
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站