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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

junfeng

中级黑马

  • 黑马币:7

  • 帖子:23

  • 精华:0

3黑马币
生成10个1到100之间的随机数,添加到AllayList集合里,数不能重复,用循环. 想了很久,卡在不重复上面了

10 个回复

倒序浏览
  1. /*
  2. 需求:生成10个1到100之间的随机数,添加到AllayList集合里,数不能重复,用循环.
  3. */
  4. import java.util.*;
  5. class ArrayListDemo
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 ArrayList<Integer> al = new ArrayList<Integer>();
  10.                 Random r = new Random();
  11.                 for(int x=0; x<10; x++)
  12.                 {
  13.                         int num = r.nextInt(100)+1;
  14.                         if(!al.contains(num))
  15.                                 al.add(num);
  16.                 }
  17.                 for(Integer a : al)
  18.                 {
  19.                         System.out.println(a);
  20.                 }
  21.         }
  22. }
复制代码
回复 使用道具 举报
ArrayList集合里  ,打错了
回复 使用道具 举报
赞~~~~~~~~~~~~~~~~~
回复 使用道具 举报
本帖最后由 sunsteam 于 2015-9-13 01:46 编辑

看你存的是什么对象 主要靠重写equals方法来做判断的  推荐存字符串 不用重写 集合对象.contains(String.valueOf(随机数))就能判断了
回复 使用道具 举报
二楼说得对!
回复 使用道具 举报
说一下思路吧:添加ArrayList之前,先使用contain方法检查是否已经存在该数。
若存在则continue,生成下一个随机数再添加。如此循环!
回复 使用道具 举报
发下我的答案把
  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.Random;

  4. public class RandomDemo {
  5.         public static void main(String[] args) {
  6.                 // 生成10 个1-100个不重复的随机数保存在ArrayList集合里面
  7.                 ArrayList al = new ArrayList();
  8.                 Random r = new Random();
  9.                 while (al.size() < 10) {
  10.                         int i = r.nextInt(100) + 1;
  11.                         if (!al.contains(i)) {
  12.                                 al.add(i);
  13.                         }
  14.                 }
  15.                 Iterator i = al.iterator();
  16.                 while (i.hasNext()) {
  17.                         System.out.print(i.next() + ", ");// 39, 53, 52, 86, 96, 79, 37, 43,94, 38,
  18.                 }
  19.         }

  20. }
复制代码
回复 使用道具 举报
回复 使用道具 举报
for (int i = 0; i < 10; i++) {
                        int a = (int)(Math.random() * 100) + 1;
                        if(!list.contains(args)) {
                                list.add(a);
                        }               
输出结果: [79, 68, 6, 22, 1, 15, 69, 22, 64, 38]  有重符的啊
回复 使用道具 举报
厉害  666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马