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条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站