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