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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© baoxinyu 中级黑马   /  2016-10-31 10:54  /  996 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

生成50个1到500之间的不同的随机数  从中统计出能被3整除但不能被8整除的数字存到数组中   将数组按照升序输出到控制台
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

10 个回复

倒序浏览
用集合 就直接treeset就可以了,然后转数组。
只用数组,要设置个字符串或者Stringbuffer存储随机数,然后indexOf判断-1,在if被各种整除的情况,就ok了 ,出来再排个序
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
weiwenhuaming 发表于 2016-10-31 11:01
用集合 就直接treeset就可以了,然后转数组。
只用数组,要设置个字符串或者Stringbuffer存储随机数,然后i ...

哥  能给写一下代码莫
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
GXM 中级黑马 2016-10-31 12:53:52
板凳
回复 使用道具 举报
首先new一个数组 然后用random生成随机数 之后用if判断存进数组里就行了
回复 使用道具 举报
你好兄弟,我试试做了下,有两种方式,你看看行不行,仅供参考!!

//(1)用TreeSet集合做
                TreeSet<Integer> ts = new TreeSet<>(new Comparator<Integer>() {
                        public int compare(Integer o1, Integer o2) {
                                int  num = o1 - o2;
                                return num == 0 ? 0 : num;
                        }
                });
               
                Random r = new Random();
                while(ts.size()<50) {
                        int a = r.nextInt(500)+1;
                        if(a % 3 == 0 && a % 8 !=0) {
                                ts.add(a);
                        }
                }
               
                Object[] arr = ts.toArray();
                for (int i = 0; i < arr.length; i++) {
                        System.out.print(arr[i] + " ");
                }


//(2)list集合和数组组合使用
                Random r = new Random();
                ArrayList<Integer> list = new ArrayList<>();
                while(list.size() < 50) {
                        int a = r.nextInt(500)+1;
                        if(a % 3 == 0 && a % 8 != 0) {
                                if(!list.contains(a)) {
                                        list.add(a);
                                }
                        }
                }
                System.out.println(list);
               
                //把每一个元素添加到数组中
                int[] arr = new int[list.size()];
                for (int i = 0; i < list.size(); i++) {
                        arr[i] = list.get(i);
                }
               
                //选择排序数组
                for (int i = 0; i < arr.length-1; i++) {
                        for (int j = i+1; j < arr.length; j++) {
                                if(arr[i] > arr[j]) {
                                        int temp = arr[i];
                                        arr[i] = arr[j];
                                        arr[j] = temp;
                                }
                        }
                }
                //打印数组
                for (int i : arr) {
                        System.out.print(i+" ");
                }
回复 使用道具 举报
可以的  太感谢哥啦  一万个赞
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
[Java] 纯文本查看 复制代码
package test01;

import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
		int[] arr = new int[50];//存放已经生成过的并且是不重复的随机数
		int[] arrFinal = new int[50];//存放能被3整除但是不能被8整除的数
		int count = 0;//记录符合能被3整除但是不能被8整除的数的个数
		int index = 0;//用于记录已经成功赋值到arr数组中的随机数的个数
		int num;
		boolean flag;
		//生成随机数,并将随机数与arr数组中已经存在的元素比较是否相等 如果不相等则赋值给arr下一个元素
		for(;index<50;){
			flag = false;
			num = (int)(Math.random()*500);
			for(int j=0;j<index;j++){
				if(num == arr[j]){
					flag = true;
					break;
				}
			}
			if(!flag){
				arr[index] = num;
				if(num%3==0&&num%8!=0){//判断是否符合能被3整除但是不能被8整除的数
					arrFinal[count] = num;
					count++;
				}
				index++;
			}
		}
		arrFinal = Arrays.copyOf(arrFinal, count);
		int tem;
		//冒泡排序
		for(int i=0;i<arrFinal.length-1;i++){
			for(int j=0;j<arrFinal.length-1-i;j++){
				if(arrFinal[j]>arrFinal[j+1]){
					tem = arrFinal[j];
					arrFinal[j] = arrFinal[j+1];
					arrFinal[j+1] = tem;
				}
			}
		}
		//循环输出
		for(int i=0;i<arrFinal.length;i++){
			System.out.print(arrFinal[i]+" ");
		}
	}
}

回复 使用道具 举报 1 0
Tyoo 中级黑马 2016-10-31 23:59:42
9#
本帖最后由 Tyoo 于 2016-11-1 00:06 编辑

[Java] 纯文本查看 复制代码
public static void main(String[] args) {

		Random r = new Random();
		
		List<Integer> list = new ArrayList<Integer>();	//	由于长度不确定,放随机数的容器选择集合,要排序所以选List
		
		//	生成50个随机数
		for (int i = 0; i < 50; i++) {
			int num = r.nextInt(501);
			
			//	判断是否符合取数要求
			if (num % 3 == 0 && num % 8 != 0) {
				list.add(num);
			}
		}
		
		Object[] arr = list.toArray();					//	集合转换为数组
		Arrays.sort(arr);								//	进行排序
		System.out.println(Arrays.asList(arr));			//	打印输出
	}
回复 使用道具 举报
来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
baoxinyu 发表于 2016-10-31 22:57
可以的  太感谢哥啦  一万个赞

客气啦,加油!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马