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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Julie 中级黑马   /  2015-2-9 23:22  /  2771 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天捯饬了半天,也没怎成的一道题。
我的源代码是:
import java.util.Random;

public class Demo {
        public static void main(String[] args) {
                int[] arr = new int[20];
                Random rd = new Random();
               
                for (int i = 0; i < arr.length; i++) {
                        int m = rd.nextInt(100)+1;
                        if(i==0){arr[0] = m;}
                        loop:
                                for (int j = 0; j < arr.length-1; j++) {
                                if(m!=arr[j]){arr[i] = m;}
                                else {continue loop;}
                        }
                        System.out.print(arr[i]+" ");
                }
        }
}
但是这个运行还是会有重复的数字,真是气死人了……求大神指导!

6 个回复

倒序浏览
本帖最后由 play1369 于 2015-2-9 23:55 编辑

          for (int i = 0; i < arr.length; i++) {
                        arr = rd.nextInt(100)+1;
                    for (int j = 0; j < i; j++) {
                                if(i==0){continue;}
                              else
{
if(arr==arr[j])
{
i--;
break;
}
}
                        }

回复 使用道具 举报
不过最好用Set集合做,循环条件是size()小于20
回复 使用道具 举报
这是入学考试题吧,应该使用Random生成随机数,把随机数存到不能重复元素的set集合中就可以了哦。
回复 使用道具 举报
mark一下,以后再看
回复 使用道具 举报
首先生成一个有序的1到100的数组array,然后从下标0开始遍历数组,设当前下标为i,每次遍历时生成一个0到99的整数,假设以randIndex来代替,将array[i] 和array[randIndex]的值交换。这样总共要进行一百次生成随机整数以及交换,最后在这个数组中任取20个数字就可以了(随意你怎么取,连续的,不连续的,只要你保证下标不重复就行,一定别用随机数Random了)。
回复 使用道具 举报
chensc 金牌黑马 2015-2-17 16:52:43
7#
学习学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马