双色球系统(JAVA代码)
生活随笔
收集整理的這篇文章主要介紹了
双色球系统(JAVA代码)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
案例說明:
投注號碼由6個紅色號碼和1個藍(lán)球號碼組成。紅色球號碼從1-33中選擇;藍(lán)色球號碼從1-16中選擇。
案例分析:
1.隨機一組中獎號碼返回
中獎號碼由6個紅球和1個藍(lán)球組成(注意:6個紅球要求不能重復(fù))。
可以定義方法用于返回一組中獎號碼(7個數(shù)據(jù)),返回的形式是一個整型數(shù)組。
2.用戶輸入一組雙色球號碼返回
定義一個方法,該方法可以錄入用戶輸入的6個紅球和1個藍(lán)球號碼。
該方法最終需要返回一個數(shù)組,數(shù)組中就是用戶錄入的號碼(7位)。
3.傳入2組號碼,判斷用戶中獎情況
定義一個方法,可以接收中獎號碼的數(shù)組,用戶選號的數(shù)組。
根據(jù)命中的紅球和藍(lán)球數(shù)判斷最終的中獎情況并輸出詳情和中獎金額
代碼分析:
定義一個方法,隨機一組中獎號碼返回
public static int[] createLuckNumbers() {//a.定義一個動態(tài)初始化數(shù)組,存儲7個數(shù)字int[] numbers = new int[7];//b.遍歷數(shù)組,為每一個位置生成對應(yīng)的號碼。(注意:遍歷前6個位置,生成6個不重復(fù)的紅球號碼,范圍是1-33)Random r = new Random();for (int i = 0; i < numbers.length - 1; i++) {//為當(dāng)前位置找出一個不重復(fù)的1-33之間的數(shù)字while (true) {int data = r.nextInt(33) + 1; //1-33 ====> (0-32) + 1//c.注意:必須判斷當(dāng)前隨機的這個號碼之前是否出現(xiàn)過,出現(xiàn)過要重新隨機一個,直到不重復(fù)為止,才可以存入數(shù)組中去//定義一個flag變量,默認(rèn)認(rèn)為data是沒有重復(fù)的boolean flag = true;for (int j = 0; j < i; j++) {if (numbers[i] == data) {//data當(dāng)前這個數(shù)據(jù)之前出現(xiàn)過,不能用flag = false;break;}}if (flag) {//data這個數(shù)據(jù)之前沒有出現(xiàn)過,可以使用numbers[i] = data;break;}}}//d.為第7個位置生成一個1-16的號碼作為藍(lán)球號碼numbers[numbers.length - 1] = r.nextInt(16) + 1;return numbers;}讓用戶輸入一組雙色球號碼
public static int[] userInputNumbers() {//a.定義一個數(shù)組存儲7個號碼int[] numbers = new int[7];//b.讓用戶錄入6個紅球號碼Scanner sc = new Scanner(System.in);for (int i = 0; i < numbers.length - 1; i++) {System.out.println("請輸入第" + (i + 1) + "個紅球號碼(1 - 33,要求不重復(fù)):");int data = sc.nextInt();//c.把當(dāng)前錄入的數(shù)據(jù)存入到數(shù)組中去numbers[i] = data;}//d.單獨錄入一個藍(lán)球號碼System.out.println("請您輸入藍(lán)球號碼(1-16):");numbers[numbers.length - 1] = sc.nextInt();return numbers;}判斷中獎情況
public static void judge(int[] luckNumbers, int[] userNumbers) {//判斷是否中獎了//a.定義兩個變量分別存儲紅球命中的個數(shù),以及藍(lán)球命中的個數(shù)int redHitNumbers = 0;int blueHitNumbers = 0;//b.判斷紅球命中了幾個for (int i = 0; i < userNumbers.length - 1; i++) {for (int j = 0; j < luckNumbers.length - 1; j++) {//每次找到了相等的,意味著當(dāng)前號碼命中了if (userNumbers[i] == luckNumbers[j]) {redHitNumbers ++;break;}}}//c.判斷藍(lán)球是否命中blueHitNumbers = userNumbers[userNumbers.length - 1] == luckNumbers[luckNumbers.length - 1] ? 1 : 0;System.out.println("中獎號碼是:");printArray(luckNumbers);System.out.println("您投注的號碼是:");printArray(userNumbers);System.out.println("您命中了" + redHitNumbers + "個紅球");System.out.println("您命中了" + blueHitNumbers + "個藍(lán)球");//d.判斷中獎情況if (blueHitNumbers == 1 && redHitNumbers < 3) {System.out.println("恭喜您,中了5元小獎!");}else if (blueHitNumbers == 1 && redHitNumbers == 3 || blueHitNumbers == 0 && redHitNumbers == 4) {System.out.println("恭喜您,中了10元小獎!");}else if (blueHitNumbers == 1 && redHitNumbers == 4 || blueHitNumbers == 0 && redHitNumbers == 5) {System.out.println("恭喜您,中了200元!");}else if (blueHitNumbers == 1 && redHitNumbers == 5) {System.out.println("恭喜您,中了3000元大獎!");}else if (blueHitNumbers == 0 && redHitNumbers == 6) {System.out.println("恭喜您,中了500萬大獎!");}else if (blueHitNumbers == 1 && redHitNumbers == 6) {System.out.println("恭喜您,中了1000萬超級大獎!");}else {System.out.println("感謝您為福利事業(yè)做出的突出貢獻(xiàn)!!");}}在主方法中依次調(diào)用自定義好的方法
public class Demo7 {public static void main(String[] args) {//1.隨機6個紅球號碼(1-33不能重復(fù)),隨機一個藍(lán)球號碼(1-16),可以采用數(shù)組裝起來作為中獎號碼。int[] luckNumbers = createLuckNumbers();//printArray(luckNumbers);//2.調(diào)用一個方法讓用戶輸入7個號碼,作為用戶選號int[] userNumbers = userInputNumbers();//printArray(userNumbers);//3.判斷中獎情況judge(luckNumbers, userNumbers);}完整代碼展示:
import java.util.Random; import java.util.Scanner;/*** 雙色球模擬*/public class Demo7 {public static void main(String[] args) {//1.隨機6個紅球號碼(1-33不能重復(fù)),隨機一個藍(lán)球號碼(1-16),可以采用數(shù)組裝起來作為中獎號碼。int[] luckNumbers = createLuckNumbers();//printArray(luckNumbers);//2.調(diào)用一個方法讓用戶輸入7個號碼,作為用戶選號int[] userNumbers = userInputNumbers();//printArray(userNumbers);//3.判斷中獎情況judge(luckNumbers, userNumbers);}public static void judge(int[] luckNumbers, int[] userNumbers) {//判斷是否中獎了//a.定義兩個變量分別存儲紅球命中的個數(shù),以及藍(lán)球命中的個數(shù)int redHitNumbers = 0;int blueHitNumbers = 0;//b.判斷紅球命中了幾個for (int i = 0; i < userNumbers.length - 1; i++) {for (int j = 0; j < luckNumbers.length - 1; j++) {//每次找到了相等的,意味著當(dāng)前號碼命中了if (userNumbers[i] == luckNumbers[j]) {redHitNumbers ++;break;}}}//c.判斷藍(lán)球是否命中blueHitNumbers = userNumbers[userNumbers.length - 1] == luckNumbers[luckNumbers.length - 1] ? 1 : 0;System.out.println("中獎號碼是:");printArray(luckNumbers);System.out.println("您投注的號碼是:");printArray(userNumbers);System.out.println("您命中了" + redHitNumbers + "個紅球");System.out.println("您命中了" + blueHitNumbers + "個藍(lán)球");//d.判斷中獎情況if (blueHitNumbers == 1 && redHitNumbers < 3) {System.out.println("恭喜您,中了5元小獎!");}else if (blueHitNumbers == 1 && redHitNumbers == 3 || blueHitNumbers == 0 && redHitNumbers == 4) {System.out.println("恭喜您,中了10元小獎!");}else if (blueHitNumbers == 1 && redHitNumbers == 4 || blueHitNumbers == 0 && redHitNumbers == 5) {System.out.println("恭喜您,中了200元!");}else if (blueHitNumbers == 1 && redHitNumbers == 5) {System.out.println("恭喜您,中了3000元大獎!");}else if (blueHitNumbers == 0 && redHitNumbers == 6) {System.out.println("恭喜您,中了500萬大獎!");}else if (blueHitNumbers == 1 && redHitNumbers == 6) {System.out.println("恭喜您,中了1000萬超級大獎!");}else {System.out.println("感謝您為福利事業(yè)做出的突出貢獻(xiàn)!!");}}public static void printArray(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "\t");}System.out.println(); //換行}public static int[] userInputNumbers() {//a.定義一個數(shù)組存儲7個號碼int[] numbers = new int[7];//b.讓用戶錄入6個紅球號碼Scanner sc = new Scanner(System.in);for (int i = 0; i < numbers.length - 1; i++) {System.out.println("請輸入第" + (i + 1) + "個紅球號碼(1 - 33,要求不重復(fù)):");int data = sc.nextInt();//c.把當(dāng)前錄入的數(shù)據(jù)存入到數(shù)組中去numbers[i] = data;}//d.單獨錄入一個藍(lán)球號碼System.out.println("請您輸入藍(lán)球號碼(1-16):");numbers[numbers.length - 1] = sc.nextInt();return numbers;}public static int[] createLuckNumbers() {//a.定義一個動態(tài)初始化數(shù)組,存儲7個數(shù)字int[] numbers = new int[7];//b.遍歷數(shù)組,為每一個位置生成對應(yīng)的號碼。(注意:遍歷前6個位置,生成6個不重復(fù)的紅球號碼,范圍是1-33)Random r = new Random();for (int i = 0; i < numbers.length - 1; i++) {//為當(dāng)前位置找出一個不重復(fù)的1-33之間的數(shù)字while (true) {int data = r.nextInt(33) + 1; //1-33 ====> (0-32) + 1//c.注意:必須判斷當(dāng)前隨機的這個號碼之前是否出現(xiàn)過,出現(xiàn)過要重新隨機一個,直到不重復(fù)為止,才可以存入數(shù)組中去//定義一個flag變量,默認(rèn)認(rèn)為data是沒有重復(fù)的boolean flag = true;for (int j = 0; j < i; j++) {if (numbers[i] == data) {//data當(dāng)前這個數(shù)據(jù)之前出現(xiàn)過,不能用flag = false;break;}}if (flag) {//data這個數(shù)據(jù)之前沒有出現(xiàn)過,可以使用numbers[i] = data;break;}}}//d.為第7個位置生成一個1-16的號碼作為藍(lán)球號碼numbers[numbers.length - 1] = r.nextInt(16) + 1;return numbers;} }運行結(jié)果展示:
總結(jié):
1.在隨機一組中獎號碼時要注意:
6個紅球要求不能重復(fù),隨機6個紅球號碼采用數(shù)組存儲,隨機1個藍(lán)球號碼采用變量存儲。
2.關(guān)于如何統(tǒng)計紅球的命中數(shù)量:
遍歷用戶的每個選號,然后遍歷中獎號碼的數(shù)組。
看當(dāng)前選號是否在中獎號碼中存在,存在則命中數(shù)量加1。
總結(jié)
以上是生活随笔為你收集整理的双色球系统(JAVA代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AOP、、
- 下一篇: Winform实时显示图像桌面程序