思路一:
通过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 版权协议,转载请附上原文出处链接和本声明。