Java案例----双色球中奖分析
生活随笔
收集整理的這篇文章主要介紹了
Java案例----双色球中奖分析
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目如下:
?
?由題意,我將構(gòu)造滿足以下要求的五個(gè)方法對題目進(jìn)行實(shí)現(xiàn):
1.對中獎(jiǎng)號碼的確定。
2.對重復(fù)號碼的判定。
3.用戶輸入自己的中獎(jiǎng)號碼進(jìn)行驗(yàn)證。
4.判斷中獎(jiǎng)球的次數(shù)以及球的顏色。
5.判斷中獎(jiǎng)的金額。
以下進(jìn)行逐個(gè)實(shí)現(xiàn):
在開始之前,我定義了幾個(gè)全局的靜態(tài)變量,有利于數(shù)據(jù)的傳遞
static Random r = new Random();//隨機(jī)數(shù)生成類 static Scanner sc = new Scanner(System.in);//鍵盤的錄入類 static int redCount = 0,blueCount = 0;//前為記錄紅球中獎(jiǎng)的次數(shù),后為記錄藍(lán)球中獎(jiǎng)的次數(shù)1.對中獎(jiǎng)號碼的確定。
public static int[] Create(){int[]arr = new int[7];//以下為生成紅色球的中獎(jiǎng)號碼for (int i = 0; i < arr.length-1; ) {int redNum = r.nextInt(33)+1;//以下的ifExist函數(shù)會(huì)在下面補(bǔ)充,是對重復(fù)元素的判斷!if(ifExist(arr,redNum)){continue;}else {arr[i] = redNum;i++;}}//以下為生成藍(lán)色球的中獎(jiǎng)號碼int blueNum = r.nextInt(16)+1;arr[arr.length-1] = blueNum;return arr;}2.對重復(fù)號碼的判定。
//傳入的參數(shù)為已經(jīng)錄入數(shù)據(jù)的數(shù)組,以及需要判斷是否存在的數(shù)字 public static boolean ifExist(int[]arr,int ra){for (int i = 0; i < arr.length; i++) {if(arr[i] == ra){return true;//存在則返回是}}return false;//如果代碼運(yùn)行到此處則說明,沒有存在重復(fù),則返回否}3.用戶輸入自己的中獎(jiǎng)號碼進(jìn)行驗(yàn)證。
public static int[] userNum(){int[]arr = new int[7];System.out.println("請輸入你的中獎(jiǎng)號碼!");for (int i = 0; i < arr.length; ) { //此處的減一是為區(qū)分紅球和藍(lán)球if(i<arr.length-1){System.out.println("您現(xiàn)在正在輸入第"+(i+1)+"個(gè)紅色球");int rednum = sc.nextInt(); //需對輸入的號碼控制在1~33才能符合題目的要求!if(rednum>0 && rednum<34){if(ifExist(arr,rednum)){System.out.println("您輸入的號碼已經(jīng)存在,請重新輸入!");}else{arr[i] = rednum;i++;}}elseSystem.out.println("您輸入的第"+(i+1)+"個(gè)紅球超過了范圍");} //以下對藍(lán)球進(jìn)行錄入操作else {System.out.println("您現(xiàn)在輸入的是藍(lán)球的號碼");int blueNum = sc.nextInt(); //控制藍(lán)球在1~16的范圍內(nèi)符合題目的要求if(blueNum>0 && blueNum<17){arr[i] = blueNum;i++;}elseSystem.out.println("你輸入的超過了藍(lán)球的范圍!");}}return arr;}4.判斷中獎(jiǎng)球的次數(shù)以及球的顏色。
public static String ifWin(int[] winingNum,int[] userNum){for (int i = 0; i < userNum.length; i++) {if(i<userNum.length-1){ //這里繼續(xù)運(yùn)用上面的存在重復(fù)元素方法,對用戶輸入的元素在中獎(jiǎng)數(shù)組里面判斷是否重復(fù) //如果是,則就是中獎(jiǎng)了,則對紅球的中獎(jiǎng)次數(shù)進(jìn)行加一操作。 //如果不是則會(huì)隨著i++而跳過該元素,繼續(xù)判斷接下來的元素。if(ifExist(winingNum,userNum[i])){redCount++;}} //以下是對藍(lán)球的中獎(jiǎng)次數(shù)進(jìn)行判斷,因?yàn)樗{(lán)球存在數(shù)組的末尾位置,故位置為(arr.length-1)。else {if(userNum[userNum.length-1] == winingNum[winingNum.length-1])blueCount++;}} //這里直接返回結(jié)果字符串,在主函數(shù)中直接輸出即可!return "此次中獎(jiǎng)結(jié)果為\t紅球:"+redCount+"個(gè),"+"藍(lán)球:"+blueCount+"個(gè)";}5.判斷中獎(jiǎng)的金額。
//在上述方法就會(huì)得到具體的各球中獎(jiǎng)次數(shù),然后就可以進(jìn)行判斷具體獎(jiǎng)金 //因?yàn)槲以O(shè)置了全局變量,所以該方法并不需要傳入如何的參數(shù)。public static String judgeBonus(){if(redCount == 0 && blueCount == 1 || redCount == 1 && blueCount == 1 || redCount == 2 && blueCount == 1 )return "獲得5元獎(jiǎng)金!";else if(redCount == 3 && blueCount == 1 || redCount == 4 && blueCount == 0)return "獲得10元獎(jiǎng)金!";else if(redCount == 4 && blueCount == 1 || redCount == 5 && blueCount == 0)return "獲得200元獎(jiǎng)金!";else if(redCount == 5 && blueCount == 1)return "獲得3000獎(jiǎng)金!";else if(redCount == 6 && blueCount == 0)return "獲得5000000獎(jiǎng)金!";else if(redCount == 6 && blueCount == 1)return "獲得10000000獎(jiǎng)金!";elsereturn "沒有該獎(jiǎng)項(xiàng)!"; //對中獎(jiǎng)次數(shù)進(jìn)行簡單的邏輯判斷,便可以進(jìn)行獎(jiǎng)金的確定。}?以上便可以實(shí)現(xiàn)雙色球彩票系統(tǒng)的具體流程,完整代碼如下:
package com.wxy.demo1; import java.util.Scanner; import java.util.Random; public class 雙色球系統(tǒng) {static Random r = new Random();static Scanner sc = new Scanner(System.in);static int redCount = 0,blueCount = 0;public static void main(String[] args) {int[]winningNum = new int[7];int[]userNum = new int[7];winningNum = Create();userNum = userNum();System.out.println(ifWin(winningNum,userNum));System.out.println(judgeBonus());}public static int[] Create(){int[]arr = new int[7];//以下為生成紅色球的中獎(jiǎng)號碼for (int i = 0; i < arr.length-1; ) {int redNum = r.nextInt(33)+1;if(ifExist(arr,redNum)){continue;}else {arr[i] = redNum;i++;}}//以下為生成藍(lán)色球的中獎(jiǎng)號碼int blueNum = r.nextInt(16)+1;arr[arr.length-1] = blueNum;return arr;}public static boolean ifExist(int[]arr,int ra){for (int i = 0; i < arr.length; i++) {if(arr[i] == ra){return true;}}return false;}public static int[] userNum(){int[]arr = new int[7];System.out.println("請輸入你的中獎(jiǎng)號碼!");for (int i = 0; i < arr.length; ) {if(i<arr.length-1){System.out.println("您現(xiàn)在正在輸入第"+(i+1)+"個(gè)紅色球");int rednum = sc.nextInt();if(rednum>0 && rednum<34){if(ifExist(arr,rednum)){System.out.println("您輸入的號碼已經(jīng)存在,請重新輸入!");}else{arr[i] = rednum;i++;}}elseSystem.out.println("您輸入的第"+(i+1)+"個(gè)紅球超過了范圍");}else {System.out.println("您現(xiàn)在輸入的是藍(lán)球的號碼");int blueNum = sc.nextInt();if(blueNum>0 && blueNum<17){arr[i] = blueNum;i++;}elseSystem.out.println("你輸入的超過了藍(lán)球的范圍!");}}return arr;}public static String ifWin(int[] winingNum,int[] userNum){for (int i = 0; i < userNum.length; i++) {if(i<userNum.length-1){if(ifExist(winingNum,userNum[i])){redCount++;}}else {if(userNum[userNum.length-1] == winingNum[winingNum.length-1])blueCount++;}}return "此次中獎(jiǎng)結(jié)果為\t紅球:"+redCount+"個(gè),"+"藍(lán)球:"+blueCount+"個(gè)";}public static String judgeBonus(){if(redCount == 0 && blueCount == 1 || redCount == 1 && blueCount == 1 || redCount == 2 && blueCount == 1 )return "獲得5元獎(jiǎng)金!";else if(redCount == 3 && blueCount == 1 || redCount == 4 && blueCount == 0)return "獲得10元獎(jiǎng)金!";else if(redCount == 4 && blueCount == 1 || redCount == 5 && blueCount == 0)return "獲得200元獎(jiǎng)金!";else if(redCount == 5 && blueCount == 1)return "獲得3000獎(jiǎng)金!";else if(redCount == 6 && blueCount == 0)return "獲得5000000獎(jiǎng)金!";else if(redCount == 6 && blueCount == 1)return "獲得10000000獎(jiǎng)金!";elsereturn "沒有該獎(jiǎng)項(xiàng)!";} }實(shí)現(xiàn)效果圖:
?
總結(jié)
以上是生活随笔為你收集整理的Java案例----双色球中奖分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web 安全性测试
- 下一篇: 世界各国名称加中文名数据