前言
这篇文章要实现的是,把数组里面的元素随机打乱并打印出来
一、解题思路
1、首先我们可以利用random类来随机生成数字
2、把通过random生成出来的数字作为我们需要打乱的数组的下标
3、在此期间我们需要判断random生成的数字是否重复,如果重复就需要重新生成,因为下标的值是唯一的
4、最后我们通过生成的随机数来作为数组的下标,这样我们打印出来的数组就是随机的了
二、实现代码
1.完整代码(无注释)
代码如下(示例):
int[] a= {5,7,9,11,13,15,17,22,29,32};
int[] b= {11,11,11,11,11,11,11,11,11,11};
Random random = new Random();
int x = random.nextInt(10);
int y = 0;
b[y] = x;
while(true){
int z = random.nextInt(10);
for (int i = 0 ; i < b.length ; i++){
if (z==b[i]){
break;
}else{
if (i==9){
y+=1;
b[y] = z;
break;
}
}
}
if (y==9){
break;
}
}
for (int i = 0 ; i < a.length ;i++){
int temp = 0;
temp=b[i];
System.out.print(a[temp]+" ");
}
2.完整代码(带注释)
代码如下(示例):
//需要打乱的数组
int[] a= {5,7,9,11,13,15,17,22,29,32};
//存放随机数的数组
int[] b= {11,11,11,11,11,11,11,11,11,11};
//定义一个random类
Random random = new Random();
//第一个随机数范围为0-9
int x = random.nextInt(10);
//随机数下标
int y = 0;
//把随机数赋值给存放随机数的数组
b[y] = x;
//循环体
while(true){
//生成随机数范围为0-9
int z = random.nextInt(10);
for (int i = 0 ; i < b.length ; i++){
//当随机数与存放随机数的数组里的元素重复时跳出循环,进行下次循环
if (z==b[i]){
break;
}else{//当随机数与存放随机数的数组里的元素都不重复时
if (i==9){
y+=1;//随机数组的下标+1来存放该随机数
b[y] = z;//随机数赋值给存放随机数的数组
break;
}
}
}
//当y==9时,此时存放随机数的数组已经完成所有的存放,即可跳出while循环
if (y==9){
break;
}
}
//根据存放随机数的数组的元素作为原数组的下标,即可生成随机打乱的数组
for (int i = 0 ; i < a.length ;i++){
int temp = 0;
temp=b[i];
System.out.print(a[temp]+" ");
}
总结
注意:一定要注意随机数是否重复,还有就是对应的循环关系