抢红包案例:
要求:
一个大V直播时发起了抢红包活动,分别有:9、666、188、520、99999五个红包。 请模拟粉丝来抽奖,按照先来先得,随机抽取,抽完即止,注意:一个红包只能被抽一次,先抽或后抽哪一个红包是随机的,示例如下(不一定是下面的顺序):
方法一
java
import java.util.Random;
import java.util.Scanner;
public class Test6 {
//完成抢红包案例
//方法1:每次抽奖都从数组中,随机找出一个金额,如果该金额不是0,就输出该金额,然后用0替换该位置处的金额; 如果该位置就是0,则重复上一步操作!
public static void main(String[] args) {
int arr[] = {9, 666, 188, 520, 9999};//定义红包
hb(arr);
}
public static void hb(int[] numbers) {
Scanner sc = new Scanner(System.in);
Random rand = new Random();//产生随机数来遍历数组不同的下标
//需要抽五次红包,所以设置五次循环
for (int i = 1; i <= 5; i++) {
System.out.println("请按任意键完成抽红包");
String q = sc.next();
while (true) {//设置以个死循环一直打印下面直到找到不为0的,一直重复这种动作
int n = rand.nextInt(numbers.length);
int money = numbers[n];
if (numbers[n] != 0) {
System.out.println("恭喜你抽中了" + money + "元红包");
numbers[n] = 0;
break;
}
}
}
System.out.println("红包抽完了");
}
}
方法2:
java
import java.util.Random;
import java.util.Scanner;
public class Test6法2 {
//方法二:打乱奖金的顺序,再依次发给粉丝
public static void main(String[] args) {
int arr[] = {9, 666, 188, 520, 9999};//定义红包
test(arr);//调用打乱红包位置的方法
tiqu(arr);//调用抽取红包的方法
}
public static void test(int arr[]) {
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
int rand = r.nextInt(arr.length);//产生随机的数,长度是数组的长度
int temp = arr[i];
arr[i] = arr[rand];//交换两个位置的值
arr[rand] = temp;
}
}
public static void tiqu(int arr[]){
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
System.out.println("请按任意键完成抽红包");
String q = sc.next();
int money = arr[i];
System.out.println("恭喜您抽到了"+money+"元");
arr[i] = 0;
System.out.println("抽取红包的活动结束"); }
}}