本帖最后由 junge520 于 2015-3-20 23:42 编辑
基础班已经学习了10天,已经学到了面向对象。昨晚看到班里聊到彩票的问题,就梳理了一下前面5章的基础知识,借鉴了班里面一些大神的思想,加了点自己的东西,做了一个简单的彩票生成兑奖器,涉及的内容有数组,循环,排序,数据类型、判断,函数,注释,随机生成数,键盘录入等等。第一次做的东西,感觉有点乱, 望各位大神不吝赐教、指点。我也能做出东西了 哈哈。那嗯是有点点小激动哦。-
- import java.util.Scanner;
- public class CaiPiao {
- public static void main(String[] args) {
- // 创建Scanner
- Scanner s = new Scanner(System.in);
- // 提示框
- System.out.println("机选多少注双色球:");
- int CNT = s.nextInt();
- {
- System.out.println("你机选的双色球号码是:");
- }
- // 将生成的彩票数放入一个二维数组容器
- int[][] arr2 = new int[CNT][7];
- // 控制生成彩票数
- caiPiaoshengcheng(CNT, arr2);
- System.out.println("请输入本期中奖号码6个红色号码是(1-33):");
- // 将中奖号码放入一个容器
- int[] arr3 = new int[7];
- // 输入6个红球和1个蓝球到arr3的容器中
- zhongjiangcaipiao(arr3, s);
- // 排序
- paixu(arr3);
- // 遍历打印彩票号码
- System.out.println("本期开奖号码是:");
- printCaiPiao(arr3);
- /*
- * 中奖号码和随机号已经生成 arr2[N][7]存放的是随机生成的N注号码 arr3存放的是中奖号码
- * 用arr3中的元素去对比arr2中的每一对 有中红球+蓝球组合的方式中奖
- */
- // 将红篮球中奖组合放入zhongjieguo中
- String[] zhongjieguo = zhongjiang(arr2, arr3, CNT);
- // 打印你的中奖组合结果
- System.out.println("你机选的号码在本次开奖的中奖组合是:");
- printjieguo(zhongjieguo);
- // 计算中奖金额
- int summoney = countmoney(zhongjieguo);
- System.out.println("恭喜你!!!");
- System.out.println("你的中奖金额是:" + summoney + "元");
- }
- private static void zhongjiangcaipiao(int[] arr3, Scanner s) {
- int k = 0;
- while (k < 6) {
- int number = s.nextInt();
- if (number >= 1 && number <= 33) {
- if (!ceshi(arr3, number)) {
- arr3[k] = number;
- k++;
- } else {
- System.out.println("开不了两个相同的红球");
- }
- } else
- System.out.println("别扯了,这不是中奖号码");
- }
- System.out.println("请输入本期中奖号码1个蓝色号码是(1-16):");
- while (true) {
- int number = s.nextInt();
- if (number >= 1 && number <= 16) {
- arr3[6] = number;
- break;
- } else
- System.out.println("蓝球会开这号?请重新输入:");
- }
- }
- private static int countmoney(String[] zhongjieguo) {
- int sum = 0;
- int liu = 0;
- int wu = 0;
- int si = 0;
- int san = 0;
- int er = 0;
- int yi = 0;
- for (int i = 0; i < zhongjieguo.length; i++) {
- switch (zhongjieguo[i]) {
- case "0+1":
- case "1+1":
- case "2+1":
- sum += 5;
- liu++;
- break;
- case "3+1":
- case "4+0":
- sum += 10;
- wu++;
- break;
- case "5+0":
- case "4+1":
- sum += 200;
- si++;
- break;
- case "5+1":
- sum += 3000;
- san++;
- break;
- case "6+0":
- sum += 100000;
- er++;
- break;
- case "6+1":
- sum += 5000000;
- yi++;
- break;
- }
- }
- System.out.println("你中了6等奖" + liu + "注" + "\t5等奖" + wu + "注" + "\t4等奖"
- + si + "注" + "\t3等奖" + san + "注" + "\t2等奖" + er + "注" + "\t1等奖"
- + yi + "注");
- return sum;
- }
- private static void printjieguo(String[] zhongjieguo) {
- for (int i = 0; i < zhongjieguo.length; i++) {
- System.out.println(zhongjieguo[i]);
- }
- }
- private static String[] zhongjiang(int[][] arr2, int[] arr3, int CNT) {
- String[] zhongjieguo = new String[CNT];
- for (int i = 0; i < arr2.length; i++) {
- int hongcount = 0;
- String fuhao = "+";
- int lancount = 0;
- for (int j = 0; j < arr3.length - 1; j++) {
- // 将arr3的每一个元素与arr2中每一组数组的前六位做比较
- if (ceshi(arr2[i], arr3[j])) {
- hongcount++;
- }
- }
- if (arr3[6] == arr2[i][6]) {
- lancount++;
- }
- zhongjieguo[i] = hongcount + fuhao + lancount;
- }
- return zhongjieguo;
- }
- private static void caiPiaoshengcheng(int CNT, int[][] arr2) {
- for (int j = 0; j < CNT; j++) {
- int num = 0;
- int index = 0;
- // 定义一个容量为7的数组,用来存放6个红球一个篮球
- int[] arr = new int[7];
- // 首先生成一个篮球号码,放入最后一位数
- arr[6] = (int) ((Math.random() * 16) + 1);
- // 随机生成6个号码,放入容器的前6个位置
- while (index < 6) {
- num = (int) ((Math.random() * 33) + 1);
- if (!(ceshi(arr, num))) {
- arr[index] = num;
- index++;
- }
- }
- // 将号码由小到大排序
- paixu(arr);
- // 遍历打印彩票号码
- printCaiPiao(arr);
- arr2[j] = arr;
- }
- }
- private static void printCaiPiao(int[] arr) {
- for (int i = 0; i < arr.length; i++) {
- if (i == arr.length - 1) {
- System.out.print("+ " + arr[i]);
- } else
- System.out.print(arr[i] + " ");
- }
- System.out.println();
- }
- private static void paixu(int[] arr) {
- // int max = arr[0];
- for (int i = 0; i < arr.length - 1; i++) {
- for (int j = i + 1; j < arr.length - 1; j++) {
- if (arr[i] > arr[j]) {
- int temp = arr[j];
- arr[j] = arr[i];
- arr[i] = temp;
- }
- }
- }
- }
- public static boolean ceshi(int[] arr, int num) {
- boolean flag = false;
- for (int i = 0; i < arr.length - 1; i++) {
- if (arr[i] == num) {
- flag = true;
- }
- }
- return flag;
- }
- }
复制代码
|
|