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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求打印10次1-20的随机数,不能有重复的数字出现!!!!面试考这,让3分钟写完(手写);

9 个回复

倒序浏览
//3分钟足够了
[AppleScript] 纯文本查看 复制代码
package myexam;

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

/*
 * 
 * 求打印10次1-20的随机数,不能有重复的数字出现
 * 思路:存入set集合
 */
public class Test23 {

	public static void main(String[] args) {
		getArray(10);
	}
	public static void getArray(int len){
		Set<Integer> set=new HashSet<Integer>();
		Random r=new Random();
		
		while(true){
			int num=r.nextInt(20-1)+1;
			set.add(num);
			
			if(set.size()>len)
				break;
		}
		for (Integer a : set) {
			System.out.print(a+" ");
		}
	}

回复 使用道具 举报
回复 使用道具 举报
各位新老司机好,老司机带带我
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
lvshen9 发表于 2017-3-8 18:09
//3分钟足够了
[mw_shl_code=applescript,true]package myexam;

怎么有点奇怪的感觉
回复 使用道具 举报
快捷键用多了也不好,还是得多敲……
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
明明凯凯归归 来自手机 初级黑马 2017-3-13 13:31:52
7#
提供一个思路:1到20放到一个list集合,0到集合长度-1中随机,打印该索引对应集合的值,然后remove。然后随机0到集和的length-1...这样循环十次,ok!考虑到效率
回复 使用道具 举报
我去,你们都用集合,看我不用集合的
public class Demo4 {
        public static void main(String[] args) {
                printRandom2(20, 1);

        }
        private static void printRandom2(int max, int min) {
                for (int x = 0; x < 10; x++) {
                        int num = (int) ((Math.random()) * (max - min)) + min;
                        System.out.println(num);
                }
        }
}
回复 使用道具 举报
旧时光9527 发表于 2017-3-13 23:10
我去,你们都用集合,看我不用集合的
public class Demo4 {
        public static void main(String[] args) {

题目要求是去重复,你这样没去重好吗
我觉得还是用Random类加Set集合最好理解也最好做 While(set.size() < 10) 就不断添加好了
回复 使用道具 举报
chen10041014 发表于 2017-3-14 14:36
题目要求是去重复,你这样没去重好吗
我觉得还是用Random类加Set集合最好理解也最好做 While(set.size() < ...

你说得对,我还是太年轻了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马