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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zl78365336 中级黑马   /  2013-12-1 17:43  /  1012 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zl78365336 于 2013-12-1 19:10 编辑

下面这个程序,打印的随机数个数不定,怎样固定输出个数呢?
--------------------------------------------------------

  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 System.out.println(getRandom());
  4.         }
  5.         
  6.         public static Set<Integer> getRandom(){
  7.                 Random rd = new Random();
  8.                 Set<Integer> list = new HashSet<Integer>();
  9.                 for(int i=0;i<10;i++){
  10.                         int r = rd.nextInt(20)+1;
  11.                         list.add(r);
  12.                 }
  13.                 return list;
  14.         }
  15. }




复制代码

评分

参与人数 2技术分 +1 黑马币 +9 收起 理由
枫儿 + 1 + 6 神马都是浮云
乔兵 + 3

查看全部评分

4 个回复

倒序浏览
set不允许存在重复元素,可以用list.size()方法作为判断条件来决定输出个数,当然在这里,个数不能超过20
回复 使用道具 举报
乔兵 发表于 2013-12-1 18:07
set不允许存在重复元素,可以用list.size()方法作为判断条件来决定输出个数,当然在这里,个数不能超过20 ...

就是要不重复的,请教list.size()具体怎么实现呢?
回复 使用道具 举报
  1. import java.util.*;

  2. public class Test {
  3.         public static void main(String[] args) {
  4.                 System.out.println(getRandom());
  5.         }
  6.       
  7.         public static Set<Integer> getRandom(){
  8.                 Random rd = new Random();
  9.                 Set<Integer> list = new HashSet<Integer>();
  10.                 while(list.size()<10){//这里约定想输出10个随机数
  11.                         int r = rd.nextInt(20)+1;
  12.                         list.add(r);
  13.                 }
  14.                 return list;
  15.         }
  16. }
复制代码


回复 使用道具 举报 1 0
楼主的程序出现问题的原因:
set集合不能存放重复元素,而在十次循环中,random产生的随机数可能存在相同的数,而相同的数据是不能被存放到集合中的
以下是我写的测试代码:
  1. public class Foo {
  2.         public static void main(String[] args) {
  3.                 System.out.println(getRandom());
  4.         }
  5.         
  6.         public static Set<Integer> getRandom(){
  7.                 Random rd = new Random();
  8.                 Set<Integer> list = new HashSet<Integer>();
  9.                 for(int i=0;i<10;i++){
  10.                         int r = rd.nextInt(20)+1;
  11.                         System.out.println("第一个随机数:"+r);//打印产生的随机数
  12.                         System.out.println(list.add(r));//打印是否存入到集合中
  13.                 }
  14.                 return list;
  15.         }
  16. }
复制代码

楼主应该找一个方法能产生十个不同的随机数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马