创建一个长度为6的int型数组,要求取值为1-30,同时元素值各不相同

  • Post author:
  • Post category:其他


思路一:

通过boolean来进行判断是否有数组元素重复,有的话则重新赋值,后结束循环体的当次循环,继续随机赋值

//方法一:
        int[] arry = new int[6];//初始化声明,长度为6的一维数组
        for (int i = 0; i < arry.length; i++) {//再数组的长度内,对数组进行随机赋值
            arry[i]=(int)(Math.random()*30+1);//给数组随机赋值【1-30】的整数值
            boolean flag = false;//初始化声明 flag
            while (true){//当flag为true时
                for (int j = 0; j < i; j++) {
                    if (arry[i] == arry[j]) { //如果有数组值相同
                        flag = true;//flag 赋值true
                        break;//结束当前循环,重新给重复的数组值赋值
                    }
                }
                    if (flag) {//如果flag为true,则表明有重复的数组值
                        arry[i] = (int) (Math.random() * 30 + 1);//重新赋值
                        flag = false;//flag恢复初始值
                        continue;//跳出当前结构
                    }

                break;//结束while循环
                }
            }

思路二:减少代码量,优化运行速度:通过双重for循环来实现,外层for循环对数组元素进行随机赋值,内层for循环则检查是否有重复的数组元素,有的话则i-1,停止内层for循环,对当前数组元素进行重新赋值

    for (int i = 0; i < arry.length; i++) {
            arry[i]=(int)(Math.random()*30+1); //给arry数组随机赋值
            for (int j = 0; j < i; j++) {
                if (arry[i]==arry[j]){// 数组元素相同,则i-1,重新赋值
                    i--;
                    break;
                }
            }
        }



版权声明:本文为v1xiaolin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。