输出不重复的随机数
优化后:
package com.fqs.demo; import java.util.Random; public class OnlyYou { public static void main(String[] args) { //第一 定义一个5位的数组 int geShu=5; int[]arr=new int[geShu]; //第二 随机数存放到下标0的数组中 Random sj=new Random(); arr[0]=sj.nextInt(geShu)+1; //第三 核心找到不重复的放到数组中 for(int i=1;i<geShu;) { //随机数放到temp中 int temp=sj.nextInt(geShu)+1; //立flag boolean isFind=false; for(int j=0;j<geShu;j++) { //数组的每个值和temp比对,如果相等 跳出循环 if(temp==arr[j]) { isFind=true; break; } } //不重复的值放的arr[i] if(!isFind) { //将临时值放入数组中 arr[i]=temp; //循环继续 开始找下一个不重复的随机数 i++; } } //输出 for(int i=0;i<geShu;i++) { System.out.println(arr[i]); } } }
正确的:
package com.fqs.demo; import java.util.Random; public class LJ{ public static void main(String[] args) { /** * 本方法的思路是: * 1、创建一个5个元素的数组, 用来存放随机数 * 2、逐个取随机数,并且第一个随机数直接放在a[0] * 3、第二个随机数开始, * 需要与数组中已经存在的元素进行逐个比较, * 直到取出不重复的随机数, * 否则一直重复取随机数 * * */ //1.创建一个5个元素的数组 int []arr=new int[5]; Random sj=new Random(); //2.第一个随机数直接放在a[0] int number1=sj.nextInt(arr.length)+1; arr[0]=number1; //3.核心 for(int i=1;i<arr.length;) { //开启外层循环 //外循环第一部分 int number=sj.nextInt(arr.length)+1; //在外层for循环中定个flag 找到出现过的值 boolean isFind = false;//赋初值是没出现过 for (int j =0; j < arr.length; j++) { //开启内循环 if (arr[j] == number) { //如果数组内的各个元素和新出现的随机数一样 isFind = true; //说明找到了相同值 break; //跳出循环 } }//结束内循环 //继续外层循环,外层循环第二部分 if (!isFind) { //如果没有找到相同值 arr[i]=number; //将新随机数赋值给数组arr[i],i 是外层循环的下标 i++; //外层循环继续 } }//结束外层for循环 //打印数组 for(int i=0;i<arr.length;i++) { System.out.println("arr[i]:"+arr[i]); } } }
错误的:
package com.fqs.demo; import java.util.Random; public class NoChongFuSJ { public static void main(String[] args) { /** * 本方法的思路是: * 1、创建一个5个元素的数组, 用来存放随机数 * 2、逐个取随机数,并且第一个随机数直接放在a[0] * 3、第二个随机数开始, * 需要与数组中已经存在的元素进行逐个比较, * 直到取出不重复的随机数, * 否则一直重复取随机数 * * */ //1.创建一个5个元素的数组 int []arr=new int[5]; Random sj=new Random(); //2.第一个随机数直接放在a[0] int number1=sj.nextInt(100)+1; arr[0]=number1; //3.当前一个值不等于后一个值时,循环继续 for(int i=1;i<arr.length;) { int number=sj.nextInt(100)+1; arr[i]=number; if(arr[i]!=arr[i-1]) { i++;//当前一个值不等于后一个值时,循环继续 } }//结束for循环 //打印数组 for(int i=0;i<arr.length;i++) { System.out.println("arr[i]:"+arr[i]); } } }
原创https://www.cnblogs.com/jesse-zhao/p/10764896.html?ivk_sa=1024320u;在该博主基础上做了修改
浙公网安备 33010602011771号