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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 leiyingyin 于 2015-8-12 23:25 编辑
  1. import java.util.Random;

  2. class RandomNumber
  3. {
  4.         public static void main (String[] args)
  5.         {
  6.                 int[] arr = new int[5];
  7.                 //声明的第一个数不存在重复的问题,所以不管3721先添加到数组里
  8.                 Random random = new Random();
  9.                 arr[0] = random.nextInt(5);
  10.                
  11.                 //从第二个数开始
  12.                 int arrIndex = 1;
  13.                 while(arrIndex != 5){
  14.                         int rand = random.nextInt(5);
  15.                         //设置标志值,遍历数组检查是否有重复的数
  16.                         //有重复则hasSame为true,没有重复则保留着默认值false,
  17.                         //这样遍历之后检查hasSame的值就可以知道有没有重复的数了
  18.                         boolean hasSame = false;
  19.                         for(int i=0;i<arrIndex;i++){
  20.                                 if(rand == arr[i]){
  21.                                         hasSame = true;
  22.                                 }
  23.                         }
  24.                         //报告!捕获到一枚不重复的随机数,上交给国家(加入到数组中,并且数组下标+1)
  25.                         if(!hasSame){
  26.                                 arr[arrIndex ] = rand;
  27.                                 arrIndex ++;
  28.                         }
  29.                         //否则arrIndex不动,继续生成随机数来填这个坑
  30.                 }
  31.                
  32.                 //输出数组检查是否正确
  33.                 for(int i = 0;i<arr.length;i++){
  34.                         System.out.print(arr[i]+"  ");
  35.                 }
  36.         }
  37. }
复制代码


输出结果:2  1  4  3  0  


欢迎大家来吐槽我的代码~~~

3 个回复

倒序浏览
{:2_31:}大神求带~~~
回复 使用道具 举报
直接用set不更简单
回复 使用道具 举报
rxtm 发表于 2015-8-13 00:00
直接用set不更简单

有要求规定不能用集合....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马