String[] stus = {"王二", "张三", "李四", "小王", "小李"};
    Set<String> set = new HashSet<String>();
    for (int i = 0; i < 3; i++) {
      int index = new java.util.Random().nextInt(5);
      String name = stus[index];
      while (set.contains(name)) {
        index = new java.util.Random().nextInt(5);
        name = stus[index];
      }
      set.add(name);
      System.out.println(name);
    }

解决方案 »

  1.   

    public static void main(String[] args) {
    String[] strs = { "王二", "张三", "李四", "小王", "小李" };
    ArrayList<String> list = new ArrayList<String>();
    for (int i = 0; i < strs.length; i++) {
    list.add(strs[i]);
    }
    Random random = new Random();
    for (int i = 0; i < strs.length; i++) {
    if (list.size() == 0)
    break;
    int index = random.nextInt(list.size());
    System.out.println(list.remove(index));
    }
    }
    应该可以满足了吧.. 只是把数组转换成ArrayList那里, 有点生硬, 我短时间也没想到好的方法.. 
      

  2.   

    new bool[]{false,false,false,false,false}  选中了 就变true
      

  3.   

    把你的for循环改成下边的
    for{}{
          int index =new java.util Random().nextInt(5);
          Map<Integer, Integer> map = new HashMap<Integer, Integer>()
          if(!map.containsKey(index)){
              system.out.printIn(stus[idex]);
          }
    }
      

  4.   

    List<String> search = new ArrayList<String>(); String[] stus = { "王二", "张三", "李四", "小王", "小李" };
    for (int i = 0; i < 20; i++) {
    int index = new java.util.Random().nextInt(5);
    String result = stus[index];
    if (!search.contains(result)) {
    System.out.println(result);
    search.add(result);
    }
         }