qq_21733941 2017-02-10 06:55 采纳率: 62.5%
浏览 2591
已采纳

难道不少人的面试题(随机分配考场),哪位大神给个完整方案

图片说明

  • 写回答

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));
    }
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?