写一个程序,把这16 支球队随机分为4 个组,每组4只球队。采用List集合和随机数
2008 北京奥运会男足参赛国家:
科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚,日本,美国,中国,
新西兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利.
方法一
思路:随机取十六个数(乱序)存到数组里,然后遍历数组每个元素作为list的索引,依次存到四个集合里面
package Lx22.Day0707;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Homework4 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("科特迪瓦");list.add("阿根廷");list.add("澳大利亚");list.add("塞尔维亚");
list.add("荷兰");list.add("尼日利亚");list.add("日本");list.add("美国");
list.add("中国");list.add("新西 兰");list.add("巴西");list.add("比利时");
list.add("韩国");list.add("喀麦隆");list.add("洪都拉斯");list.add("意大利");
List<String> group1 = new ArrayList<>();//创建第一组
List<String> group2 = new ArrayList<>();//共16个队伍
List<String> group3 = new ArrayList<>();//每组四队
List<String> group4 = new ArrayList<>();
int [] arr = new int[16];
Random random = new Random();//从[0-15]随机取16个不重复的数
int q=0;
m:for (int i = 0; i <1000; i++) {
int r =random.nextInt(16);
x:for (int j=0; j <16 ; j++) {
if(arr[j]==r){
break x;
}
if(j==15)
{
arr[q]=r;
q++;
if(q==16)
break m;
}
}
}
group1.add(list.get(arr[0]));//四个组分别加入队伍
group1.add(list.get(arr[1]));
group1.add(list.get(arr[2]));
group1.add(list.get(arr[3]));
group2.add(list.get(arr[4]));
group2.add(list.get(arr[5]));
group2.add(list.get(arr[6]));
group2.add(list.get(arr[7]));
group3.add(list.get(arr[8]));
group3.add(list.get(arr[9]));
group3.add(list.get(arr[10]));
group3.add(list.get(arr[11]));
group4.add(list.get(arr[12]));
group4.add(list.get(arr[13]));
group4.add(list.get(arr[14]));
group4.add(list.get(arr[15]));
System.out.println(group1);
System.out.println(group2);
System.out.println(group3);
System.out.println(group4);
}
}
方法二
思路:随机取一个数(范围0-list.size()-1)作为索引在集合里取一个元素,外层循环分组,内层循环取球队,每取一个球队,就用remove将它从集合里删除
package Lx22.Day0707;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Homework4ff2 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("科特迪瓦");list.add("阿根廷");list.add("澳大利亚");list.add("塞尔维亚");
list.add("荷兰");list.add("尼日利亚");list.add("日本");list.add("美国");
list.add("中国");list.add("新西兰");list.add("巴西");list.add("比利时");
list.add("韩国");list.add("喀麦隆");list.add("洪都拉斯");list.add("意大利");
Random random = new Random();
List<String> list2 = new ArrayList<>();
for (int i = 0; i <4 ; i++) {
System.out.println("第"+(i+1)+"组");
for (int j = 0; j <4 ; j++) {
int k = random.nextInt(list.size());
list2.add(list.get(k));
list.remove(list.get(k));
}
System.out.println(list2);
list2.clear();
}
}
}