需求:有一个抢红包游戏,分别有1,10,100,1000,10000五个红包,请模拟抽奖,按照先到先得的顺序随机抽取,抽完即止。注意:一个红包只能被抽一次,先抽或后抽哪一个红包是随机的
分析:写 for 循环抽奖五次每次抽奖,都从数组中随机找出一个数,并把这个数换为0,然后下一个人抽奖,如果抽中的是0,则代表该位置的红包被抢走了,则从数组中重新抽取,继续判断,知道抽到的金额不是0(但是存在性能问题)
import java.util.Random;
import java.util.Scanner;
//需求:有一个抢红包游戏,分别有1,10,100,1000,10000五个红包,请模拟抽奖,按照先到先得的顺序随机抽取,抽完即止。注意:
//一个红包只能被抽一次,先抽或后抽哪一个红包是随机的
public class grabRedEnvelop {
public static void main(String[] args) {
int[] arr={1,10,100,1000,10000};
grab(arr);
}
// 写 for 循环抽奖五次每次抽奖,都从数组中随机找出一个数,并把这个数换为0,然后下一个人抽奖,如果抽中的是0,则代表该位置的红包被抢走了,
// 则从数组中重新抽取,继续判断,知道抽到的金额不是0
public static void grab(int[] arr){
Random ra=new Random();
Scanner sc=new Scanner(System.in);
for(int i=0;i<arr.length;i++){
// 提示粉丝进行抽奖
System.out.println("请您按任意数开始抽奖");
// 等待用户输入
sc.next();
while (true) {
// 随机产生数组的索引
int n=ra.nextInt(5);
// 获取金额
int money=arr[n];
// 判断红包是否为0
if(money>0){
System.out.println("恭喜您抽到了:"+arr[n]);
arr[n]=0;
break;
}
}
}
System.out.println("活动结束了......");
}
}