Java编程题

问题:题库里共有试题1000题,难度级别分4类:容易(550道),较易(300道),较难(100),困难(50)。
现在要生成1000题的试卷,要求:前500道每10道题:容易6题 较易2题,较难1题,困难1题;
后500道每10道题;容易5题,交易4题,较难1题;
完整demo表示出实现方法即可!
我自己写了一个,希望有更好的实现方法。完结的时候会把我的实现方法贴出来。

/*
1000道题目,每组10道,共100组,前50组一个规则,后50组一个规则,随机抽取,抽完1000题!
*/
import java.util.HashSet;
import java.util.TreeMap;
public class Paper {
static String[] arr[]={new String[550], new String[300], new String[100], new String[50] }
,srr={ "_易:", "较易:", "_难:", "困难:" };
public static void main(String[] args) {
TreeMap<String, HashSet<String>> tm = new TreeMap<String, HashSet<String>>();
for (int i = 0; i < arr.length; i++) //题库!
for (int j = 0; j < arr[i].length; j++) 
arr[i][j] = srr[i] + "" + (j + 1)+"\t";
String key = "";
for(int i=1;i<=100;i++) {// 随机抽题目!
key=i<10?"第00"+i:i<100?"第0"+i:"第"+i;
HashSet<String> hs=new HashSet<String>();
if(i<=50) {//前50组规则!
for(int x=0;x<arr.length;x++) {
if(x<=0&&hs.size()<6) {
sect(6,arr[x].length,x,hs);
}else if(x==1&&hs.size()<8) {
sect(8,arr[x].length,x,hs);
}else if(x==2&&hs.size()<9) {
sect(9,arr[x].length,x,hs);
}else {
sect(10,arr[x].length,x,hs);
}
}
tm.put(key, hs);
}else {//后50组规则!
for(int x=0;x<arr.length;x++) {
if(x<=0&&hs.size()<5) {
sect(5,arr[x].length,x,hs);
}else if(x==1&&hs.size()<9) {
sect(9,arr[x].length,x,hs);
}else if(x==2&&hs.size()<10) {
sect(10,arr[x].length,x,hs);
}
}
tm.put(key, hs);
}
}
for(String s:tm.keySet()) {//抽提完成查看!
System.out.println(s);
for(String s1:tm.get(s)) {
System.out.print(s1);
}
System.out.println();
System.out.println();
}
}
private static void sect(int size, int length,int x,HashSet<String> hs) {
for (; hs.size() < size;) {
int p = (int) (Math.random() *length);
if(arr[x][p]!=null) {
hs.add(arr[x][p]);
arr[x][p]=null;
}
}
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-22
好的,向大神学习
相似回答