获取几个不重复的随机数到数组中
import java.util.Random; public class No2 { public static void main(String[] args) { //定义一个随机数 Random r=new Random(); //定义范围 int len=9; //一个随机数先放到数组第一个 int[]arr=new int[len]; arr[0]=r.nextInt(len); //获取数组中第二个 不相等的随机数 for (int i = 1; i < len; ) {//后一个随机数 //如果后一个随机数temp 不相等 isNoEq=true ; arr[i]=temp;外层循环加1 boolean isNoEq=true; int temp=r.nextInt(len); for (int j = 0; j <i ; j++) {//前一个随机数 //如果前一个和后一个随机数相等 说明是假的 需要再次获得temp if(arr[j]==temp){ isNoEq=false; break; } } if(isNoEq==true){ arr[i]=temp; i++; } } for (int i = 0; i <len ; i++) { System.out.print(arr[i]); } } }
理解break在嵌套循环里的作用
import java.util.Random; public class Test { public static void main(String[] args) { Random r=new Random(); int num=r.nextInt(5); for (int i = 1; i < 5; i++) { System.out.println("\n"); for (int j = 0; j <i ; j++) { System.out.print(j); /*if(j==2){ break; }*/ } } } }
第一步:
第二步:
第三步:
最终理解在不重复的数组中的break
import java.util.Random; public class No { public static void main(String[] args) { //引入随机数 Random r=new Random(); //设置随机数的范围 int len=10; //目标数组的范围 int[]arr=new int[len]; //定义一个随机数放奥数组中 arr[0]=r.nextInt(len); //开始拿后一个数和前一个数对比 for (int i = 1; i < len; ) {//后一个数从1开始,len结束 //立flag 如果不相等 说明找到了 外部循环+1 boolean isNotEqu=true; //相等的次数 int count=0; int temp=r.nextInt(len);//临时temp,如果符合,在外层循环里写 放到arr数组中 arr[i]=temp System.out.println("外层循环里的随机数:"+temp); for (int j = 0; j < i; j++) {//前一个数从0开始,结束是已经找到的数组的范围 //拿前一个数和后一个数比较 如果相等 说明有重复的 ; // 比如arr[0]=1,temp=1 temp 生成新的随机数 // 比如arr[0]=1,temp=2 temp 生成新的随机数 //在内循环里 j=1时 第一次循环得到 temp和第一个值 是否相等; // 在内循环里 j=2时 第一次得到temp和第一个值 是否相等 第二次得到 temp和第二个值是否相等 if(arr[j]==temp){ //如果和任何一个已经存在在数组内的值相等,说明立的flag是真的,需要一个新的temp, // 跳出内循环,到外循环里继续生成新的temp isNotEqu=true; //计数器 count++; break; } if(count==0){ System.out.println("随机数:"+temp+"和数组内任何一个都不相同"); isNotEqu=false; } } if(isNotEqu==false){ arr[i]=temp; i++; } } for (int i = 0; i <len ; i++) { System.out.print(arr[i]); } } }