1 /**
2 设计一个程序,模拟从彩球池里随机抽取5个彩球(彩球池里一共有11个彩球,编号为1~11),
3 要求在控制台打印出这5个被取出来的彩球的编号(注意编号不能重复)。
4 思路:
5 1、创建一个int类型的一维数组balls,用来保存11个彩球的编号
6 2、创建一个boolean类型的一维数组flags,用来保存11个彩球的状态,默认全部为false
7 (比如:flags[0]=true,意味着编号等于balls[0]的这个彩球已经被取出来了)
8 3、去彩球池里取钱之前,先生成一个随机数,随机数的范围在0~10之间,
9 根据产生的随机数的值去balls数组里取对应位置的彩球编号
10 (比如:
11 a.产生的随机数使用index变量保存
12 b.如果index值为3,则先判断编号等于balls[3]的彩球有没有被取出来过
13 c.如果没有被取过,则取出该球,即在控制台输出该球的编号
14 d.如果已经被取过了,则重复步骤a,b,c
15 )
16 4、需要取5次彩球(循环次数已知,可以使用for循环实现)
17 */
18 public class BallsTest{
19 public static void main(String[] args){
20 int[] balls = {1,2,3,4,5,6,7,8,9,10,11};
21 boolean[] flags = new boolean[11];
22 int index;
23 for(int i=0;i<5;i++){
24 do{
25 index = (int)(Math.random()*11);
26 if(flags[index]==false){
27 System.out.print(balls[index]+" ");
28 flags[index]=true;
29 break;
30 }
31 }while(flags[index]);//或者while(flags[index]==true)
32 }
33 }
34 }