/* Lotto 对奖  */

import java.util.Arrays;

import java.util.Scanner;

 

public class LottoOnPrize {

      final static int MAXNUM = 49;      // 最大开奖号码        

      public static void main(String[] args) {

            final int totalBall = 7;    // 总开奖号码球数

            int[] selectedNum = new int[totalBall];   // 选取的号码

            int[] openedNum = new int[totalBall];   // 开奖的号码

            int[] prizeNum = new int[totalBall];   // 中奖的号码

           

            // 号码阵列初值化

            initialArrayNum(selectedNum);

            initialArrayNum(openedNum);

            initialArrayNum(prizeNum);

           

            // 取得输入选取号码

            selectNum(selectedNum);

           

            // 开奖

            openNum(openedNum);

           

            // 排序

            Arrays.sort(openedNum);

            Arrays.sort(selectedNum);

           

            // 对奖

            int onPrizeNum = onPrize(selectedNum, openedNum, prizeNum);

           

            // 列印输出

            System.out.println();

            System.out.println("开奖号码是:");

            printBallNum(openedNum);

            System.out.println("你选取的号码是:");

            printBallNum(selectedNum);

            if ( onPrizeNum > 0 ) {

                  System.out.println("恭喜您中了" + onPrizeNum + "个号码奖.... !!!  中奖号码是:");

                  printBallNum(prizeNum);

            }

            else

                  System.out.println("您摃....龟了 !!!");

      }

 

      // 号码阵列初值化

      private static void initialArrayNum(int[] a) {

            for (int i=0; i<a.length; i++)

                  a[i] = 0;

      }

     

      // 产生号码 (1-49)

      private static int getNum(int maxNum) {

            return (int) Math.floor(Math.random() * maxNum) + 1;

      }

     

      private static void printBallNum(int[] a) {

            for (int i=0; i<a.length; i++) {

                  if ( a[i] != 0 )

                        System.out.print(a[i] + "\t");

            }

            System.out.print("\n");

      }

     

      // 对奖

      private static int onPrize(int[] Selected, int[] Opened, int[] Prized) {

            int count = 0;

            for (int i=0; i<Selected.length; i++) {

                  for (int j=0; j<Opened.length; j++) {

                        if (Selected[i] == Opened[j]) {

                              Prized[count] = Selected[i];

                              count++;

                              break;

                        }

                  }

            }

            return count;

      }

     

      // 开奖

      private static void openNum(int[] a) {

            int times = 0;      // 第几次Counter

            int inNum = 0;

            while (times < a.length) {

                  inNum = getNum(MAXNUM);

                  if ( CheckBallNum(a, inNum) == 0 ) {

                        a[times] = inNum;

                        times = times + 1;

                  }

            }

      }

     

      // 输入选取号码

      private static void selectNum(int[] a) {

            int times = 0;      // 第几次Counter

            int inNum = 0;      // 输入号码

            Scanner scan = new Scanner(System.in);

            while (times < a.length) {

                  System.out.print("请输入你的第" + (times+1) + "个号码:");

                  inNum = scan.nextInt();

                  if ( CheckNum(a, inNum) ) {

                        a[times] = inNum;

                        times++;

                  }

            }

      }

 

      // 选取号码检查

      private static boolean CheckNum(int[] a, int num) {

            int returnStatus = CheckBallNum(a, num);

            if (returnStatus == 1)

                  System.out.println("你选择的号码:" + num + " 不在 1 " + MAXNUM + " 范围内 !!!");

            else if (returnStatus == 2)

                  System.out.println("你选择的号码:" + num + " 重复了 !!!");

             

            return (returnStatus == 0);

      }

     

      // 选取号码检查

      private static int CheckBallNum(int[] a, int num) {

            int result = 0;

            if ((num < 1) || (num > MAXNUM))

                  result = 1;

            else

            {

                  for (int i = 0; i < a.length; i++) {

                        if (a[i] == num) {

                              result = 2;

                              break;

                        }

                  }

            }

            return result;

      }

}

 

相关文章