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));
}
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报