求一个Java程序:学校进行体能考核,在全部六个项目中每个学生随机抽取两...
发布网友
发布时间:2024-08-07 07:20
我来回答
共2个回答
热心网友
时间:2024-08-13 12:33
应该满足你的要求了.myEclipse 9.0环境测试成功.如果可以用,请给分咯~
够简单了吧,实体类都没用.
public static void main(String[] args) {
String[] sports = { "篮球", "足球", "排球", "羽毛球", "兵乓球", "网球" };
Scanner s = new Scanner(System.in);
String answer = "y";
while (answer.equals("y")) {
String[] chosed = randomS(sports);
System.out.println("指派某个学生的测试项目为:" + chosed[0] +"和" + chosed[1]);
System.out.println("要继续吗?(y/n)");
answer = s.nextLine();
}
}
private static String[] randomS(String[] sports) {
String[] chosed = new String[2];
int i = -1;
i = (int) (Math.random() * 6);
chosed[0] = sports[i];
while (true) {
i = (int) (Math.random() * 6);
if (sports[i].equals(chosed[0])) {
continue;
} else {
chosed[1] = sports[i];
break;
}
}
return chosed;
}
热心网友
时间:2024-08-13 12:28
因为是随机的用 (回答者: eric_luan) 他的 if (sports[i].equals(chosed[0])) 不能保证一定能够取得不重复的哦 ,而且执行起来效率也不高,for循环的次数不可控,很有可能不是最少甚至可能怎么都无法取到的哦 呵呵 给一个算法参考一下吧 呵呵……
public void getRandom(int[] result,int size){
int min = 0;
int max = size - 1;
int[] array = new int[size];
//初始化数组
for(int i =0;i<array.length;i++){
array[i] = min+i;
System.out.println(array[i]);
}
System.out.println("初始化array成功!");
//获取random值
Random r = new Random();
for(int i = 0;i<size;i++){
//c 为获取0—size-i之间的随机Int类型的值
int c =r.nextInt(size-i);
int index = c-min;
//将取得的随机数与数组最后一个元素互换
swap(array, index, array.length-1-i);
//将取得的随机数放入最终的随机数数组中
result[i] = array[array.length-1-i];
System.out.println("结果为"+result[i]);
}
}