【Java编程练习】福利彩票23选5,数据不可重复(数组实现,非集合)

 模仿福利彩票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+"  ");
		}
	}
}

 

你可能感兴趣的:(Java练习,Java,数组,23选5)