美文网首页
Java 产生不重复的随机数组及其例题答案

Java 产生不重复的随机数组及其例题答案

作者: 小熊先生很不开心 | 来源:发表于2018-01-31 21:11 被阅读401次
    public class Test_08 {
        public static void main(String[] args) {
            //创建数组
            int[] arr1 = new int[10];
    
            //创建随机数
            Random random = new Random();
             //遍历开始赋值
            for (int i = 0; i < arr1.length; i++) {
                //用死循环  可以一直取随机数 直到不同退出
                while (true) {
                    boolean flag = false;//标记 用来表示 是否重复
                    int number = random.nextInt(10) + 1;//产生随机数
                    //遍历 之前的产生的数组中的数字
                    for (int j = 0; j < i; j++) {
                        if (number == arr1[j]) {
                            flag = true;
                            break;//若相同 跳出 重新取随机输
                        }
                    }
                    //若不重复 赋值 break出死循环
                    if (!flag) {
                        arr1[i] = number;
                        break;
                    }
                }
            }
                  for (int i = 0; i < arr1.length; i++) {
                System.out.print(arr1[i] + " ");
            }
        }
    }
            
    
    
    
    package com.itheima.level02;
    
    import java.util.Random;
    
    /*
     * 分析以下需求,并用代码实现
        1.创建两个长度为10的数组,数组内元素为随机生成的、不重复的 1-100之间的整数.
        2.定义一个方法,传入两个数组,方法中将两个数组不同的元素拼接成一个字符串,并且将该字符串以及字符串的长度输出到控制台上;
            如果没有则输出"对不起两个数组的所有元素均相同"
            
        思路
            1.定义一个方法,用来为数组生成不重复的随机数赋值,方法参数是数组类型
                循环生成随机数,每生成一个,就判断一下这个数组中是否包含这个数,如果不包含,就赋值,如果包含,就重新生成。
                
        第二小问思路:
                先遍历其中一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
                再遍历另外一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
     */
    public class Task08 {
        public static void main(String[] args) {
            int[] arr1 = new int[10];
            int[] arr2 = new int[10];
            createRandomElment(arr1);
            createRandomElment(arr2);
            printArr(arr1);
            printArr(arr2);
            pinJie(arr1, arr2);
        }
        /*
         * 遍历数组
         */
        public static void printArr(int[] arr) {
            System.out.print("[");
            for(int i = 0; i < arr.length; i++) {
                if(i == arr.length - 1) {
                    System.out.println(arr[i] + "]");
                } else {
                    System.out.print(arr[i]+", ");
                }
            }
        }
        /*
         * 为数组生成不重复的随机数
         */
        public static void createRandomElment(int[] arr) {
            Random r = new Random();
            //定义一个变量,用来当做已经赋值的索引
            int index = 0;
            //判断如果这个索引是 arr.length - 1。代表已经赋值满了,就结束循环
            while(index < arr.length) {//如果index < 数组的长度,代表赋值没有满
                //生成随机数
                int num = r.nextInt(100) + 1;
                //判断一下这个数组中是否包含刚刚生成的随机数
                boolean flag = exist(arr, num);
                if(!flag) {//如果不存在
                    arr[index] = num;
                    index++;
                }
            }
        }
        /*
         * 判断一下这个数组中是否包含这个数
         * 参数:数组,要判断的数
         * 遍历这个数组
         *  判断当前遍历到的数是否== 我们要判断的数,如果相等,直接返回 true
         *                 如果不等于,就一直继续遍历判断
         * 如果遍历完了都没有找到,返回false
         */
        public static boolean exist(int[] arr, int num) {
            for(int i = 0; i < arr.length; i++) {
                if(arr[i] == num) {
                    return true;
                }
            }
            return false;
        }
        /*
         * 
         * 定义一个方法,传入两个数组,方法中将两个数组不同的元素拼接成一个字符串,并且将该字符串以及字符串的长度输出到控制台上;
            如果没有则输出"对不起两个数组的所有元素均相同"
         * 第二小问思路:
                先遍历其中一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
                再遍历另外一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
         */
        /*
         * 方法两个参数 int[]  int[]
         */
        
        public static void pinJie(int[] arr1, int[] arr2) {
            //定义字符串类型变量,用来拼接
            String str = "";
    //      先遍历其中一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
            for(int i = 0; i < arr1.length; i++) {
                //判断当前遍历到的元素是否在另一数组中存在
                boolean flag = exist(arr2,arr1[i]);
                if(!flag) {//如果不存在,就拼接
                    str = str + arr1[i] + " ";
                }
            }
            //再遍历另外一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
            for(int i = 0; i < arr2.length; i++) {
                //判断当前遍历到的元素是否在另一数组中存在
                boolean flag = exist(arr1,arr2[i]);
                if(!flag) {//如果不存在,就拼接
                    str = str + arr2[i] + " ";
                }
            }
            System.out.println(str);
            if(str.length() == 0) {
                System.out.println("不存在");
            } else {
                System.out.println("长度是" + str.length());
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Java 产生不重复的随机数组及其例题答案

          本文链接:https://www.haomeiwen.com/subject/feolzxtx.html