package homeworkday11;
import java.util.ArrayList;
/*第四题:分析以下需求,并用代码实现
有一个抽奖池,该抽奖池中存放了奖励的金额,该抽奖池中的奖项为 {10,5,20,50,100,200,500,800,2,80,300,700};
创建两个抽奖箱(线程)设置线程名称分别为“抽奖箱1”,“抽奖箱2”,随机从抽奖池中获取奖项元素并打印在控制台上,格式如下:
每次抽出一个奖项就打印一个(随机但是奖励不能重复)
1.每次抽出一个奖项就打印一个(随机)
抽奖箱1 又产生了一个 10 元大奖
抽奖箱1 又产生了一个 100 元大奖
抽奖箱1 又产生了一个 200 元大奖
抽奖箱1 又产生了一个 800 元大奖
抽奖箱2 又产生了一个 700 元大奖
//.....
2.每次抽的过程中,不打印,抽完时一次性打印(随机)
在此次抽奖过程中,抽奖箱1总共产生了6个奖项,分别为:10,20,100,500,2,300最高奖项为300元,总计额为932元
在此次抽奖过程中,抽奖箱2总共产生了6个奖项,分别为:5,50,200,800,80,700最高奖项为800元,总计额为1835元
3.每次抽的过程中,不打印,抽完时一次性打印(随机)
在此次抽奖过程中,抽奖箱1总共产生了6个奖项,分别为:10,20,100,500,2,300最高奖项为300元,总计额为932元
在此次抽奖过程中,抽奖箱2总共产生了6个奖项,分别为:5,50,200,800,80,700最高奖项为800元,总计额为1835元
在此次抽奖过程中,抽奖箱2中产生了最大奖项,该奖项金额为800元
------------------------------------------------------------------*/
public class test4 {
public static void main(String[] args) {
ChouJiang3 l= new ChouJiang3();
Thread t=new Thread(l);
Thread t1=new Thread(l);
t.start();
t.setName("抽奖箱A");
t1.start();
t1.setName("抽奖箱B");
}
}//主程序末尾
package homeworkday11;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
class ChouJiang3 implements Runnable {
public static int[] arr = {10,5,20,50,100,200,500,800,2,80,300,700};
int num = arr.length;
static ArrayList list = new ArrayList();
static ArrayList list1 = new ArrayList();
static int lmax;
static{
for(int money:arr){
list1.add(money);
}
lmax=Collections.max(list1);
}
@Override
public void run() {
String threadName = Thread.currentThread().getName();
ArrayList box = new ArrayList();
while(true) {
synchronized(this){
if(num<=0)
break;
//创建随机数对象
Random r = new Random();
int index ;
//为了获取不重复的索引值
while(true) {
index = r.nextInt(arr.length);
if(list.contains(index))
continue;
else {
list.add(index);
break;
}
}
int money = arr[index];
box.add(money);
//在此次抽奖过程中,抽奖箱1总共产生了6个奖项,分别为:10,20,100,500,2,300
num--;
}
}
System.out.println("在此次抽奖过程中,"+threadName + "总共产生了 "+box.size()+"个奖项,分别为:"+method1(box)+"最高奖项为"+method2(box)+"元,总计额为"+method3(box)+"元");
if(method2(box)==lmax){
System.out.println("在此次抽奖过程中,最大奖项在"+threadName+"中产生了,该奖项金额为"+lmax+"元");
}
}
//输出所有元素的方法
public String method1(ArrayList box){
StringBuilder sb=new StringBuilder();
for(int i=0;i sb.append(box.get(i));
if(i!=box.size()-1){
sb.append(",");
}
}
return sb.toString();
}
//求集合最大值的方法
public int method2(ArrayList box){
int max=Collections.max(box);
return max;
}
//求集合总数的方法
public int method3(ArrayList box){
int sum=0;
for (Integer integer : box) {
sum+=integer;
}
return sum;
}
}//程序末尾