分析问题的步骤:
1.方法是否需要接收数据进行处理
接收一个数组,里面有5个元素表示5个红包
2.方法是否需要返回数据
不需要
3.方法内部如何完成抢红包的需求
方案1:使用for循环抽奖5次,每次都随机找出一个金额,如果金额不是0就抽中,并且用0替换该位置的金额;如果抽中的是0,代表该位置处的红包之前被别人抢走了,则重新从数组中找出一个金额。
import java.util.Random;
import java.util.Scanner;
public class hongbao {
public static void main(String[] args) {
int[] a={1,2,3,4,5};
red(a);
}
public static void red(int[] money){
Random ra = new Random();
Scanner sc = new Scanner(System.in);
//1.定义for循环控制抽奖5次
for(int i =1;i<= money.length;i++){
System.out.println("输入任意内容抽奖:");
sc.next(); //等待用户输入内容
//找一个随机金额
while (true) { //ctrl+alt+t快捷键可以直接包围
int index = ra.nextInt(money.length);
int a = money[index];
//判断红包是否为0
if(a!=0){
System.out.println("抽中" + a + "元");
money[index]=0;
break; //结束这次抽奖
}
}
}
}
}
方案2:先把数组中的5个金额打乱顺序,然后打乱后的顺序就认为是中奖顺序,用for循环执行5次。这种方案性能更好。