黑马程序员技术交流社区

标题: 随机摇出1-33之间的7个随机数,不能重复 [打印本页]

作者: 白龙马大魔王    时间: 2016-7-11 15:56
标题: 随机摇出1-33之间的7个随机数,不能重复
要求存储双色球用ArrayList集合完成,
随机摇出双色球可使用Random类nextInt()方法、ArrayList集合remove()方法完成
作者: ImKing    时间: 2016-7-11 16:52
  1. import java.util.ArrayList;
  2. import java.util.List;

  3. @SuppressWarnings({ "rawtypes", "unchecked" })
  4. public class test {

  5.         public static void main(String[] args) {

  6.                 List lit = new ArrayList();
  7.                 int count = 0;
  8.                 while (true) {
  9.                         int temp = (int) (Math.random() * 33 + 1);
  10.                         if (!lit.toString().contains(String.valueOf(temp))) {
  11.                                 count++;
  12.                                 lit.add(temp);
  13.                         }
  14.                         if (count != 7) {
  15.                                 continue;
  16.                         } else {
  17.                                 break;
  18.                         }
  19.                 }

  20.                 for (int i = 0; i < 7; i++) {
  21.                         System.out.print(lit.get(i) + " ");
  22.                 }

  23.         }
  24. }
复制代码


这样可以实现方式的一种,
作者: ImKing    时间: 2016-7-11 16:55


这样改也可以,题主根据需要可以稍微完善一下
作者: 真诚额    时间: 2017-6-27 15:03
import java.util.ArrayList;

public class Random_1 {
        public static void main(String[] args) {
                ArrayList<Integer> array = new ArrayList<Integer>();//首先创建一个集合
                while (true) { //无限循环
                        // int ran_1=new Random().nextInt(32)+1;
                        int ran = (int) (Math.random() * 32) + 1;//用函数表达式比较简洁;
                        array.add(ran); // 先将元素存储到集合中
                        // System.out.println(ran);
                        for (int j = 0; j < array.size() - 1; j++) { // 通过for来进行遍历,使得重复的随机数去掉,循环到新添加的元素之前
                                if (ran == array.get(j)) {// 集合中随机数与该数前面元素是否存在相同
                                        array.remove(array.size() - 1);
                                        break;
                                }
                                //System.out.println(ran);
                        }
                        if (array.size() == 7) {
                                break;
                        }
                }
                System.out.println("中奖号码位:");
                for (int i = 0; i < array.size(); i++) {
                        System.out.print(array.get(i) + "\t");
                }
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2