A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© junge520 中级黑马   /  2015-3-20 23:07  /  1104 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 junge520 于 2015-3-20 23:42 编辑

         基础班已经学习了10天,已经学到了面向对象。昨晚看到班里聊到彩票的问题,就梳理了一下前面5章的基础知识,借鉴了班里面一些大神的思想,加了点自己的东西,做了一个简单的彩票生成兑奖器,涉及的内容有数组,循环,排序,数据类型、判断,函数,注释,随机生成数,键盘录入等等。第一次做的东西,感觉有点乱, 望各位大神不吝赐教、指点。我也能做出东西了 哈哈。那嗯是有点点小激动哦。


  1. import java.util.Scanner;

  2. public class CaiPiao {
  3. public static void main(String[] args) {

  4.         // 创建Scanner

  5.         Scanner s = new Scanner(System.in);
  6.         // 提示框
  7.         System.out.println("机选多少注双色球:");

  8.         int CNT = s.nextInt();
  9.         {
  10.                 System.out.println("你机选的双色球号码是:");
  11.         }
  12.         // 将生成的彩票数放入一个二维数组容器
  13.         int[][] arr2 = new int[CNT][7];

  14.         // 控制生成彩票数
  15.         caiPiaoshengcheng(CNT, arr2);

  16.         System.out.println("请输入本期中奖号码6个红色号码是(1-33):");
  17.         // 将中奖号码放入一个容器
  18.         int[] arr3 = new int[7];

  19.         // 输入6个红球和1个蓝球到arr3的容器中
  20.         zhongjiangcaipiao(arr3, s);

  21.         // 排序
  22.         paixu(arr3);

  23.         // 遍历打印彩票号码
  24.         System.out.println("本期开奖号码是:");
  25.         printCaiPiao(arr3);

  26.         /*
  27.          * 中奖号码和随机号已经生成 arr2[N][7]存放的是随机生成的N注号码 arr3存放的是中奖号码
  28.          * 用arr3中的元素去对比arr2中的每一对 有中红球+蓝球组合的方式中奖
  29.          */

  30.         // 将红篮球中奖组合放入zhongjieguo中
  31.         String[] zhongjieguo = zhongjiang(arr2, arr3, CNT);

  32.         // 打印你的中奖组合结果
  33.         System.out.println("你机选的号码在本次开奖的中奖组合是:");
  34.         printjieguo(zhongjieguo);

  35.         // 计算中奖金额
  36.         int summoney = countmoney(zhongjieguo);
  37.         System.out.println("恭喜你!!!");
  38.         System.out.println("你的中奖金额是:" + summoney + "元");
  39. }

  40. private static void zhongjiangcaipiao(int[] arr3, Scanner s) {
  41.         int k = 0;
  42.         while (k < 6) {
  43.                 int number = s.nextInt();
  44.                 if (number >= 1 && number <= 33) {
  45.                         if (!ceshi(arr3, number)) {
  46.                                 arr3[k] = number;
  47.                                 k++;
  48.                         } else {
  49.                                 System.out.println("开不了两个相同的红球");
  50.                         }
  51.                 } else
  52.                         System.out.println("别扯了,这不是中奖号码");
  53.         }
  54.         System.out.println("请输入本期中奖号码1个蓝色号码是(1-16):");
  55.         while (true) {
  56.                 int number = s.nextInt();
  57.                 if (number >= 1 && number <= 16) {
  58.                         arr3[6] = number;
  59.                         break;
  60.                 } else
  61.                         System.out.println("蓝球会开这号?请重新输入:");
  62.         }
  63. }

  64. private static int countmoney(String[] zhongjieguo) {
  65.         int sum = 0;
  66.         int liu = 0;
  67.         int wu = 0;
  68.         int si = 0;
  69.         int san = 0;
  70.         int er = 0;
  71.         int yi = 0;
  72.         for (int i = 0; i < zhongjieguo.length; i++) {
  73.                 switch (zhongjieguo[i]) {
  74.                 case "0+1":
  75.                 case "1+1":
  76.                 case "2+1":
  77.                         sum += 5;
  78.                         liu++;
  79.                         break;
  80.                 case "3+1":
  81.                 case "4+0":
  82.                         sum += 10;
  83.                         wu++;
  84.                         break;
  85.                 case "5+0":
  86.                 case "4+1":
  87.                         sum += 200;
  88.                         si++;
  89.                         break;
  90.                 case "5+1":
  91.                         sum += 3000;
  92.                         san++;
  93.                         break;
  94.                 case "6+0":
  95.                         sum += 100000;
  96.                         er++;
  97.                         break;
  98.                 case "6+1":
  99.                         sum += 5000000;
  100.                         yi++;
  101.                         break;
  102.                 }

  103.         }

  104.         System.out.println("你中了6等奖" + liu + "注" + "\t5等奖" + wu + "注" + "\t4等奖"
  105.                         + si + "注" + "\t3等奖" + san + "注" + "\t2等奖" + er + "注" + "\t1等奖"
  106.                         + yi + "注");

  107.         return sum;
  108. }

  109. private static void printjieguo(String[] zhongjieguo) {
  110.         for (int i = 0; i < zhongjieguo.length; i++) {
  111.                 System.out.println(zhongjieguo[i]);
  112.         }
  113. }

  114. private static String[] zhongjiang(int[][] arr2, int[] arr3, int CNT) {
  115.         String[] zhongjieguo = new String[CNT];

  116.         for (int i = 0; i < arr2.length; i++) {
  117.                 int hongcount = 0;
  118.                 String fuhao = "+";
  119.                 int lancount = 0;
  120.                 for (int j = 0; j < arr3.length - 1; j++) {
  121.                         // 将arr3的每一个元素与arr2中每一组数组的前六位做比较
  122.                         if (ceshi(arr2[i], arr3[j])) {
  123.                                 hongcount++;
  124.                         }
  125.                 }
  126.                 if (arr3[6] == arr2[i][6]) {
  127.                         lancount++;
  128.                 }
  129.                 zhongjieguo[i] = hongcount + fuhao + lancount;

  130.         }

  131.         return zhongjieguo;

  132. }

  133. private static void caiPiaoshengcheng(int CNT, int[][] arr2) {
  134.         for (int j = 0; j < CNT; j++) {
  135.                 int num = 0;
  136.                 int index = 0;
  137.                 // 定义一个容量为7的数组,用来存放6个红球一个篮球
  138.                 int[] arr = new int[7];
  139.                 // 首先生成一个篮球号码,放入最后一位数
  140.                 arr[6] = (int) ((Math.random() * 16) + 1);

  141.                 // 随机生成6个号码,放入容器的前6个位置
  142.                 while (index < 6) {
  143.                         num = (int) ((Math.random() * 33) + 1);
  144.                         if (!(ceshi(arr, num))) {
  145.                                 arr[index] = num;
  146.                                 index++;
  147.                         }
  148.                 }
  149.                 // 将号码由小到大排序
  150.                 paixu(arr);
  151.                 // 遍历打印彩票号码
  152.                 printCaiPiao(arr);
  153.                 arr2[j] = arr;
  154.         }
  155. }

  156. private static void printCaiPiao(int[] arr) {
  157.         for (int i = 0; i < arr.length; i++) {
  158.                 if (i == arr.length - 1) {
  159.                         System.out.print("+ " + arr[i]);
  160.                 } else
  161.                         System.out.print(arr[i] + " ");
  162.         }
  163.         System.out.println();
  164. }

  165. private static void paixu(int[] arr) {
  166.         // int max = arr[0];
  167.         for (int i = 0; i < arr.length - 1; i++) {
  168.                 for (int j = i + 1; j < arr.length - 1; j++) {
  169.                         if (arr[i] > arr[j]) {
  170.                                 int temp = arr[j];
  171.                                 arr[j] = arr[i];
  172.                                 arr[i] = temp;
  173.                         }

  174.                 }

  175.         }
  176. }

  177. public static boolean ceshi(int[] arr, int num) {
  178.         boolean flag = false;
  179.         for (int i = 0; i < arr.length - 1; i++) {
  180.                 if (arr[i] == num) {
  181.                         flag = true;
  182.                 }

  183.         }
  184.         return flag;
  185. }

  186. }
复制代码


3 个回复

倒序浏览
不错哦,等等去买个彩票。(*^__^*) 嘻嘻……
回复 使用道具 举报
都是大神呀。
回复 使用道具 举报
夏鹏 发表于 2015-3-20 23:22
不错哦,等等去买个彩票。(*^__^*) 嘻嘻……

刚才那个是乱码 现在好了!中500万的时候记得请我吃拉面!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马