双色球系统(JAVA代码)
生活随笔
收集整理的這篇文章主要介紹了
双色球系统(JAVA代码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
案例說明:
投注號碼由6個紅色號碼和1個藍球號碼組成。紅色球號碼從1-33中選擇;藍色球號碼從1-16中選擇。
案例分析:
1.隨機一組中獎號碼返回
中獎號碼由6個紅球和1個藍球組成(注意:6個紅球要求不能重復)。
可以定義方法用于返回一組中獎號碼(7個數據),返回的形式是一個整型數組。
2.用戶輸入一組雙色球號碼返回
定義一個方法,該方法可以錄入用戶輸入的6個紅球和1個藍球號碼。
該方法最終需要返回一個數組,數組中就是用戶錄入的號碼(7位)。
3.傳入2組號碼,判斷用戶中獎情況
定義一個方法,可以接收中獎號碼的數組,用戶選號的數組。
根據命中的紅球和藍球數判斷最終的中獎情況并輸出詳情和中獎金額
代碼分析:
定義一個方法,隨機一組中獎號碼返回
public static int[] createLuckNumbers() {//a.定義一個動態初始化數組,存儲7個數字int[] numbers = new int[7];//b.遍歷數組,為每一個位置生成對應的號碼。(注意:遍歷前6個位置,生成6個不重復的紅球號碼,范圍是1-33)Random r = new Random();for (int i = 0; i < numbers.length - 1; i++) {//為當前位置找出一個不重復的1-33之間的數字while (true) {int data = r.nextInt(33) + 1; //1-33 ====> (0-32) + 1//c.注意:必須判斷當前隨機的這個號碼之前是否出現過,出現過要重新隨機一個,直到不重復為止,才可以存入數組中去//定義一個flag變量,默認認為data是沒有重復的boolean flag = true;for (int j = 0; j < i; j++) {if (numbers[i] == data) {//data當前這個數據之前出現過,不能用flag = false;break;}}if (flag) {//data這個數據之前沒有出現過,可以使用numbers[i] = data;break;}}}//d.為第7個位置生成一個1-16的號碼作為藍球號碼numbers[numbers.length - 1] = r.nextInt(16) + 1;return numbers;}讓用戶輸入一組雙色球號碼
public static int[] userInputNumbers() {//a.定義一個數組存儲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,要求不重復):");int data = sc.nextInt();//c.把當前錄入的數據存入到數組中去numbers[i] = data;}//d.單獨錄入一個藍球號碼System.out.println("請您輸入藍球號碼(1-16):");numbers[numbers.length - 1] = sc.nextInt();return numbers;}判斷中獎情況
public static void judge(int[] luckNumbers, int[] userNumbers) {//判斷是否中獎了//a.定義兩個變量分別存儲紅球命中的個數,以及藍球命中的個數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++) {//每次找到了相等的,意味著當前號碼命中了if (userNumbers[i] == luckNumbers[j]) {redHitNumbers ++;break;}}}//c.判斷藍球是否命中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 + "個藍球");//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("感謝您為福利事業做出的突出貢獻!!");}}在主方法中依次調用自定義好的方法
public class Demo7 {public static void main(String[] args) {//1.隨機6個紅球號碼(1-33不能重復),隨機一個藍球號碼(1-16),可以采用數組裝起來作為中獎號碼。int[] luckNumbers = createLuckNumbers();//printArray(luckNumbers);//2.調用一個方法讓用戶輸入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不能重復),隨機一個藍球號碼(1-16),可以采用數組裝起來作為中獎號碼。int[] luckNumbers = createLuckNumbers();//printArray(luckNumbers);//2.調用一個方法讓用戶輸入7個號碼,作為用戶選號int[] userNumbers = userInputNumbers();//printArray(userNumbers);//3.判斷中獎情況judge(luckNumbers, userNumbers);}public static void judge(int[] luckNumbers, int[] userNumbers) {//判斷是否中獎了//a.定義兩個變量分別存儲紅球命中的個數,以及藍球命中的個數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++) {//每次找到了相等的,意味著當前號碼命中了if (userNumbers[i] == luckNumbers[j]) {redHitNumbers ++;break;}}}//c.判斷藍球是否命中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 + "個藍球");//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("感謝您為福利事業做出的突出貢獻!!");}}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.定義一個數組存儲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,要求不重復):");int data = sc.nextInt();//c.把當前錄入的數據存入到數組中去numbers[i] = data;}//d.單獨錄入一個藍球號碼System.out.println("請您輸入藍球號碼(1-16):");numbers[numbers.length - 1] = sc.nextInt();return numbers;}public static int[] createLuckNumbers() {//a.定義一個動態初始化數組,存儲7個數字int[] numbers = new int[7];//b.遍歷數組,為每一個位置生成對應的號碼。(注意:遍歷前6個位置,生成6個不重復的紅球號碼,范圍是1-33)Random r = new Random();for (int i = 0; i < numbers.length - 1; i++) {//為當前位置找出一個不重復的1-33之間的數字while (true) {int data = r.nextInt(33) + 1; //1-33 ====> (0-32) + 1//c.注意:必須判斷當前隨機的這個號碼之前是否出現過,出現過要重新隨機一個,直到不重復為止,才可以存入數組中去//定義一個flag變量,默認認為data是沒有重復的boolean flag = true;for (int j = 0; j < i; j++) {if (numbers[i] == data) {//data當前這個數據之前出現過,不能用flag = false;break;}}if (flag) {//data這個數據之前沒有出現過,可以使用numbers[i] = data;break;}}}//d.為第7個位置生成一個1-16的號碼作為藍球號碼numbers[numbers.length - 1] = r.nextInt(16) + 1;return numbers;} }運行結果展示:
總結:
1.在隨機一組中獎號碼時要注意:
6個紅球要求不能重復,隨機6個紅球號碼采用數組存儲,隨機1個藍球號碼采用變量存儲。
2.關于如何統計紅球的命中數量:
遍歷用戶的每個選號,然后遍歷中獎號碼的數組。
看當前選號是否在中獎號碼中存在,存在則命中數量加1。
總結
以上是生活随笔為你收集整理的双色球系统(JAVA代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AOP、、
- 下一篇: 计算机标准用户怎么改成管理员,win7系