黑马程序员技术交流社区
标题:
基础班学完前五章做的彩票生成兑奖器
[打印本页]
作者:
junge520
时间:
2015-3-20 23:07
标题:
基础班学完前五章做的彩票生成兑奖器
本帖最后由 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;
}
}
复制代码
作者:
夏鹏
时间:
2015-3-20 23:22
不错哦,等等去买个彩票。(*^__^*) 嘻嘻……
作者:
xiaogougou
时间:
2015-3-20 23:29
都是大神呀。
作者:
junge520
时间:
2015-3-20 23:43
夏鹏 发表于 2015-3-20 23:22
不错哦,等等去买个彩票。(*^__^*) 嘻嘻……
刚才那个是乱码 现在好了!中500万的时候记得请我吃拉面!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2