Java ArrayList应用之抽奖软件
生活随笔
收集整理的這篇文章主要介紹了
Java ArrayList应用之抽奖软件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
抽獎軟件
a.通過鍵盤錄入抽獎人姓名,多個抽獎人用"|"號分割.
輸入完成后,控制臺打印抽獎人姓名,并提示YES OR NO來表示確認.
一旦確認,自動為抽獎人分配ID,開始抽獎.(如果出現(xiàn)重名,則以ID為準(zhǔn)).
b.獎品存放在某個集合中
c.1等獎 1個, 2等獎 2個, 3等獎 4個
d.每次抽獎均打印姓名,然后鍵盤輸入next開始第二次抽獎.
如果獎品已經(jīng)抽完,則公布中獎匯總.
不再提示next.
抽獎人類
package com.homework2;// 定義一個中獎人類 public class LuckyDog {// 建議使用包裝類private Integer id; // 中獎人的IDprivate String name;// 中獎人的姓名// 空參構(gòu)造函數(shù)public LuckyDog() {}// 全參構(gòu)造函數(shù)public LuckyDog(Integer id, String name) {this.id = id;this.name = name;}// set getpublic Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}// 重寫toString()@Overridepublic String toString() {return "LuckyDog{" +"id=" + id +", name='" + name + '\'' +'}';} }獎品類
package com.homework2;// 定義一個獎品類 public class Prize {private String name; // 獎品的名稱private String level; // 獎品的等級private Integer count; // 獎品的數(shù)量public Prize() {}public Prize(String name, String level, Integer count) {this.name = name;this.level = level;this.count = count;}@Overridepublic String toString() {return "Prize{" +"name='" + name + '\'' +", level='" + level + '\'' +", count=" + count +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getLevel() {return level;}public void setLevel(String level) {this.level = level;}public Integer getCount() {return count;}public void setCount(Integer count) {this.count = count;} }結(jié)果類
package com.homework2;// 中獎結(jié)果類 public class Result {private Integer id; // 中獎人的IDprivate String username; // 中獎人的姓名private String prizeName;// 中獎的獎品名稱public Result() {}public Result(Integer id, String username, String prizeName) {this.id = id;this.username = username;this.prizeName = prizeName;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPrizeName() {return prizeName;}public void setPrizeName(String prizeName) {this.prizeName = prizeName;}@Overridepublic String toString() {return "Result{" +"id=" + id +", username='" + username + '\'' +", prizeName='" + prizeName + '\'' +'}';} }工具類 做初始化操作
package com.homework2;import java.util.ArrayList; import java.util.Scanner;// 定義一個工具類 /* 完成兩大功能1.初始化抽獎人的信息2.初始化獎品的信息*/ public class ToolsClass {// 初始化一個抽獎人的初始容量// 需要容器static ArrayList<LuckyDog> list = new ArrayList<>();// 1.定義一個靜態(tài)方法 初始化抽獎人的信息public static ArrayList<LuckyDog> initPerson() {// 從控制臺中獲取System.out.println("請輸入?yún)⑴c抽獎人的信息,如果有多個,中間用|分隔: ");Scanner scan = new Scanner(System.in);String strs = scan.nextLine(); // 抽獎人信息// split(String pattern)拆分字符串為字符數(shù)組// 非空校驗,一定要對數(shù)據(jù)的合法性校驗if (strs != null&& !strs.equals("")&& !strs.equals("null")) {// 表明數(shù)據(jù)是合法的安全的// str 抽獎人不能為空// str 抽獎人不能是空格// str 抽獎人字符串不能是空的//拆分字符串String[] persons = strs.split("\\|");// 循環(huán)遍歷persons 長度確定的for (int i = 0; i < persons.length; i++) {// 往list容器中添加中獎人信息list.add(new LuckyDog(i + 1, persons[i])); // 只能存儲LuckyDog這種類型對象// 類型不對,要新建對象}} else {// 如果前面輸入的信息不合法,// ****遞歸操作****initPerson();}// 把參與抽獎人的姓名在控制臺輸出// 遍歷list容器for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i).getName() + "" + list.get(i).getId());}return list;}// 2.初始化獎品public static ArrayList<Prize> initPrize() {// 構(gòu)造一個空的獎品容器ArrayList<Prize> list = new ArrayList<>();// 存儲獎品list.add(new Prize("IPhone12", "一等獎", 1));list.add(new Prize("華為P40 Pro", "二等獎", 3));list.add(new Prize("富光水杯", "三等獎", 4));return list;} }主方法
package com.homework2;import java.util.ArrayList; import java.util.Scanner;// 定義一個主程序類 // 啟動類 public class MainProgram {public static void main(String[] args) {// 1.初始化抽獎的人姓名// 2.初始化獎品的信息// 采用面向?qū)ο缶幊趟枷?拆分代碼// 把以上兩大功能放入工具類中// 直接調(diào)用ToolsClass中的initPerson()方法ArrayList<LuckyDog> ldaList = ToolsClass.initPerson(); // for (int i = 0; i < ldaList.size(); i++) { // System.out.println(ldaList.get(i)); }ArrayList<Prize> prizeList = ToolsClass.initPrize(); // for (int i = 0; i < prizeList.size(); i++) { // System.out.println(prizeList.get(i)); }// 構(gòu)建一個scanner類對象Scanner scan = new Scanner(System.in);System.out.println("請輸入YES或NO:");String str = scan.nextLine();// 注意區(qū)分next 和 nextline的區(qū)別// 相等判斷忽略大小寫 equalsIgnoreCaseif (str.equalsIgnoreCase("NO")) {System.out.println("此次抽獎失敗!");return; // 程序結(jié)束} else if (!str.equalsIgnoreCase("YES")) {System.out.println("輸入的數(shù)據(jù)不符合要求");return;} else {System.out.println("進入程序");// 程序開始抽獎// 先構(gòu)建中獎容器ArrayList<Result> results = new ArrayList<>();// 循環(huán) 循環(huán)的次數(shù) 獎品的總數(shù)是8// 循環(huán)結(jié)束的條件,參與抽獎的人數(shù)為空或獎品為空while (ldaList.size() > 0 && prizeList.size() > 0) {// 循環(huán)體,開始抽獎// 索引隨機,控制取值范圍[0.0,1.0)int index = (int) (Math.random() * ldaList.size());// 抽獎人數(shù)組列表的隨機索引值// 根據(jù)索引獲取對應(yīng)的抽獎人LuckyDog luckyDog = ldaList.get(index);// 獎品 倒著抽獎Prize prize = prizeList.get(prizeList.size() - 1);//拼接中獎結(jié)果results.add(new Result(luckyDog.getId(), luckyDog.getName(), prize.getName()));// 獎品的個數(shù)減一, 如果該獎品的個數(shù)此時為1,把該獎刪除掉if (prize.getCount() == 1) {// 刪除對應(yīng)的獎品prizeList.remove(prize);} else {// 獎品的個數(shù)減一prize.setCount(prize.getCount() - 1);}// 刪除中獎人的信息// public E remove(int index) {ldaList.remove(index);// 1.根據(jù)索引刪除對應(yīng)的信息//public boolean remove(Object o) {// 2.直接刪除對象// 輸出中獎人的信息System.out.println("本次中獎人是:" + luckyDog.getName()+ "本次中獎人的ID是" + luckyDog.getId()+ "獎品為:" + prize.getName()+ "中獎的等級是:" + prize.getLevel() + "!!!");//再次判斷人數(shù)和獎品數(shù)if (prizeList.size() > 0 && ldaList.size() > 0) {//當(dāng)人數(shù)和獎品數(shù)都大于0才可以參與下一輪抽獎System.out.println("請輸入next 參與抽中獎");String next = scan.next();while (!next.equalsIgnoreCase("next")) {System.out.println("請輸入next!開啟下一輪抽獎");// 需要判斷,輸入的next變量值,是否為"next"next = scan.next();}}}// 抽獎結(jié)束System.out.println("**--抽獎結(jié)束--**");System.out.println("------------");// 展示中獎結(jié)果System.out.println("中獎信息結(jié)果為: ");System.out.println("id"+"\t"+"姓名"+"\t"+"獎品");for (int i = 0; i < results.size(); i++) {System.out.println(results.get(i).getId()+","+results.get(i).getUsername()+","+results.get(i).getPrizeName());}}}}總結(jié)
以上是生活随笔為你收集整理的Java ArrayList应用之抽奖软件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从Dao聊到Aragon
- 下一篇: java 域模型_基于Spring实现领