14行应该为 boolean[] picked = new boolean[flav.length];picked为一个布尔型数组,初值均为false.19 产生一个随机数t
21 把t对应的下标flav数组中的元素赋给results[0];
22 设picked[t]=true;再循环
19 产生一个随机数t
20 如果t与上次相同,跳回18,直至产生的t不重复
21 把t对应的下标flav数组中的元素赋给results[1];
22 设picked[t]=true;如此反复,这一段代码只是为了使results[]中的元素不重复.最后返回的results[]是flav[]里元素的不同排列顺序的随机组合.

解决方案 »

  1.   

    for (int i =0; i<n; i++)
    16 { 
    17 int t;
    18 do
    19       t = (int)(Math.random() * flav.length);
    20 while(picked[t]);
    21 results[i] = flav[t];
    22 picked[t] = true;
    23 }t = (int)(Math.random() * flav.length);//随机选出一个味道
    while(picked[t]);                      //当picked[t]=false,说明它没有被选,
                                           //此时 results[i] = flav[t]; picked[t] = true;
                                           //当picked[t]=true,说明它已经被选过,继续选择
    这样flavorSet()每次以随机方式挑选各种不同的味道。
      

  2.   

    math.random()*flav.length,这个结果是不是有可能是16,24...
    那flav[t]不是可能越界了吗?