import java.util.ArrayList;
import java.util.Arrays;
public class Test1 {
public static void main(String[] args) {
//生成数组长度值(100>=length>=1)
int length=(int)(Math.random()*100+1);
System.out.println(length);
//定义长度为length的int类型数组
int[] arr = new int[length];
//lose用来记录赋值失败的数组元素个数
int lose=0;
//loser数组用来记录赋值失败的数组元素下标
ArrayList<Integer> loser = new ArrayList<Integer>();
for (int i = 0; i < length; i++) {
//b用来记录生出的随机数
int b=0;
//根据j的值来判断生成的随机数是否以及和数组中的元素重复
int j=0;
//loop用来记录循环的次数
int loop=0;
//isExpire用来记录循环是否已经超过自己设定的最大可循环次数
boolean isExpire=false;
while (j!=-1) {
b = (int)(Math.random()*100+1);
//System.out.println(b);
j=isExist(b,arr);
if(j!=-1){
System.out.println("当前下标"+i+",随机数"+b+",和已生成的下标为"+j+"的数组元素"+arr[j]+"重复!");
loop++;
}
if (loop>=10) {
isExpire=true;
break;
}
}
if(isExpire){
loser.add(i);
System.out.println("当前下标"+i+",循环"+loop+"次依旧插入失败-----------------------------------");
lose++;
continue;
}
arr[i] = b;
System.out.println("当前下标"+i+",随机数"+b+",循环"+loop+"次成功插入数组");
}
System.out.println("*****************");
System.out.println("*****生成完毕!*****");
System.out.println("*****************");
System.out.println(Arrays.toString(arr));
System.out.println("数组长度"+length+",其中"+(length-lose)+"个元素插入成功,"+lose+"个元素插入失败!");
if (lose>0) {
System.out.println("插入失败的数组元素下标集合:"+loser.toString());
}
}
/**
*
* @param b 生成的随机数
* @param arr 数组
* @return 如果存在b和arr数组中某一元素数值重复则返回该数组元素的下标,如果不存在返回-1
*
*/
public static int isExist(int b,int[] arr){
for (int i = 0; i < arr.length; i++) {
if (b==arr[i]){
return i;
}
}
return -1;
}
}