今天推荐一个JAVA小项目:双色球彩票系统。
题目:用户输入6个红色球号码(范围:1——33红色号码每个号码只能出现一次,不能重复)和一个蓝色球号码(范围:1——16),最后与中奖号码(随机生成)对比,进行兑奖。
注意:球的顺序不管,只要是有这个球就行。
效果图如下:
彩票中奖规则如下图:
大致思路: 将整个程序分为3个小模块:1.生成中奖号码 2.玩家输入号码 3.玩家号码与中奖号码进行对比,进行兑奖。
本人代码:
import java.util.Random; import java.util.Scanner; public class 双色球彩票系统 { public static void main(String[] args) { //生成中奖号码 int[] WinNumber = WinningNumbers(); //显示中奖号码 System.out.print("中奖号码为:"); for (int x : WinNumber) { System.out.print(x + " "); } System.out.println(); //玩家输入号码 int[] UserNumber = User(); //兑奖环节 ClaimYourPrize(WinNumber, UserNumber); } //兑奖判断 public static void ClaimYourPrize(int[] arr1, int[] arr2) { //存放红球数量 int redNumber = 0; //存放篮球数量 int blueNumber = 0; //将红球数量找出来 for (int i = 0; i < arr1.length - 1; i++) { for (int j = 0; j < arr1.length; j++) { if (arr2[j] == arr1[i]) { redNumber++; break; } } } //将蓝球数量找出来 if (arr1[arr1.length - 1] == arr2[arr2.length - 1]) { blueNumber++; } //根据球的数量就行兑奖 if (redNumber == 2 && blueNumber == 1 || redNumber == 1 && blueNumber == 1 || redNumber == 0 && blueNumber == 1) System.out.print("是六等奖哦!恭喜中奖5元!"); else if (redNumber == 4 && blueNumber == 0 || redNumber == 3 && blueNumber == 1) System.out.print("是五等奖哦!恭喜中奖10元!"); else if (redNumber == 5 && blueNumber == 0 || redNumber == 4 && blueNumber == 1) System.out.print("是四等奖哦!恭喜中奖200元!"); else if (redNumber == 5 && blueNumber == 1) System.out.print("是三等奖哦!恭喜中奖3000元!"); else if (redNumber == 6 && blueNumber == 0) System.out.print("是二等奖哦!恭喜中奖500万元!"); else if (redNumber == 6 && blueNumber == 1) System.out.print("是一等奖哦!恭喜中奖1000万元!"); else System.out.println("很可惜,没中奖哦,再接再厉哦!"); } //用户输入号码 public static int[] User() { int[] arr = new int[7]; int usernumber = 0; Scanner sc = new Scanner(System.in); for (int i = 0; i < arr.length - 1; ) { System.out.print("请输入第" + (i + 1) + "个红球:"); usernumber = sc.nextInt(); //红球号码只能是1——33 if (usernumber >= 1 && usernumber <= 33) { if (JudgmentRepetition(arr, usernumber)) { arr[i] = usernumber; i++; } else System.out.println("该号码已输入,请重新输入!"); } else System.out.println("号码超出错误,请重新输入!"); } //蓝球号码1——16 while (true) { System.out.print("请输入蓝球号码:"); usernumber = sc.nextInt(); if (usernumber >= 1 && usernumber <= 16) { arr[arr.length - 1] = usernumber; break; } else System.out.println("号码输入错误,请重新输入!"); } return arr; } //判断是否有重复号码,有返回false,没有返回true public static boolean JudgmentRepetition(int[] arr, int Number) { for (int i = 0; i < arr.length - 1; i++) { if (Number == arr[i]) { return false; } } return true; } //随机生成中奖号码 public static int[] WinningNumbers() { int[] Winningnumbers = new int[7]; Random random = new Random(); for (int i = 0; i < Winningnumbers.length - 1; ) { //生成红色号码 int Number = random.nextInt(33) + 1; //如果号码没重复,就放在组里,反之一直生成新号码 if (JudgmentRepetition(Winningnumbers, Number)) { Winningnumbers[i] = Number; i++; } } //生成蓝色号码 Winningnumbers[Winningnumbers.length - 1] = random.nextInt(16) + 1; return Winningnumbers; } }