A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lmy518 中级黑马   /  2015-11-20 20:08  /  675 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

编写一个程序,获取10个1至20的随机数,要求随机数不能重复
这道题用ArrayList集合需要加中间的那个if判断,如果不加的话,打印的有重复的随机数,为什么要加if判断啊?
public static void main(String[] args) {
                //创建ArrayList集合对象
                ArrayList<Integer> list = new ArrayList<Integer>();
                //判断当前集合中的个数 是否为10个
                while(list.size() !=10){
                        //创建1-20之间的随机数
                        int num = (int)(Math.random()*20+1);
                        //判断随机数是否在集合中存在
                        if(!list.contains(num)){
                                //添加随机数到集合
                                list.add(num);
                               
                        }
               
                }
                System.out.println(list);
        }


4 个回复

正序浏览
yaoyeqing 发表于 2015-11-20 22:01
ArrayList集合特点是能存储有序的,重复的对象,存取元素的顺序一致,如果要存不重复的元素,要用HashSet或 ...

这个我知道,就是好奇嘛,为啥加个if判断,打印的随机数就不重复了。
回复 使用道具 举报
小笨笨天 发表于 2015-11-20 21:55
判断是否重复啊  题目不是要求不能重复随机数嘛

if(!list.contains(num))
这行是判断是否重复?我理解成判断集合里是否有这20个随机数,如果没有就用下面那行add方法添加进去。
回复 使用道具 举报
ArrayList集合特点是能存储有序的,重复的对象,存取元素的顺序一致,如果要存不重复的元素,要用HashSet或者TreeSet
回复 使用道具 举报
判断是否重复啊  题目不是要求不能重复随机数嘛
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马