模仿福利彩票23选5,随机生成5个不同的1~23的整数。(数组实现)
下面是我的思路:
package myHomework;
import java.util.Random;
public class Demo02 {
//(2)模仿福利彩票23选5,随机生成5个不同的1~23的整数。
public static void main(String[] args) {
Random ran =new Random();
int[] cp = new int[5];
System.out.println("23选5(1~23)开奖:");
int x=0;
for(int i=0;i<5;i++){//开始抽奖 i是抽奖的次数
while (true){
boolean OK=true;
x = ran.nextInt(23)+1;//随机一个数字
for(int e:cp){ //遍历数组检查是否有相同的
if(e==x){
OK=false;//有相同的数字 则roll出来的数字不能用 跳出循环开始重新Roll一次
break;
}
}
if(OK) break; //roll出来的数字是数组中没有的 可以直接使用
}
cp[i]= x;//roll出来的X是不重复的数字,所以直接赋值就可以
}
for(int e:cp){
System.out.print(e+" ");
}
}
}
之后听老师讲课,发现老师的代码要比我的简单,直接修改了下也打出来给大家做个参考:
package myHomework;
import java.util.Random;
public class Demo02 {
//(2)模仿福利彩票23选5,随机生成5个不同的1~23的整数。
public static void main(String[] args) {
Random ran =new Random();
int[] cp = new int[5];
System.out.println("23选5(1~23)开奖:");
int x=0;
for(int i=0;i<5;i++){//开始抽奖 i是抽奖的次数
x = ran.nextInt(23)+1;//随机一个数字
for(int e:cp){ //遍历数组检查是否有相同的
if(e==x){
i--;//相同,重新给cp[i]赋值;
}
}
cp[i]= x;
}
for(int e:cp){
System.out.print(e+" ");
}
}
}