码迷,mamicode.com
首页 > 其他好文 > 详细

模拟彩票购票之——双色球

时间:2015-07-23 23:21:18      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

双色球当今时代很是流行,笔者觉得这种游戏比较简单适合于我这样初级水平的人研究,所以闲暇之余将自己思路展现给大家,不能说是分享,因为并非佳品。目的很单纯,就是扔一块硬臭砖头,希望能有幸看到玉石的纯洁光芒。对于其中的不足,欢迎读者的批评和赐教。

双色球的投注规则有很多,这里只研究单注的情形。

 技术分享

双色球单注下注规则如下:

双色球投注区分为红球号码区和蓝球号码区,红球号码范围为01~33,蓝球号码范围为01~16。双色球每期从33个红球中开出6个号码,从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是竞猜开奖号码的6个红球号码和1个蓝球号码,顺序不限。

 

程序需求:

模拟1.随机产生序列,2.手工输入序列,3.能够退出,在退出前重复1和2

 技术分享

 

废话不多说直接上代码:

 

package javaBaseKnowledge;

import java.util.Scanner;

/**
* 双色球生成规则:红球 1-33 蓝球1-16 不放回抽取出6个红球 +1个篮球完成以下功能: 1.机选一次 2.手动选择 3.退出要求:
* 如果机选或手动输入的都要求输出的是有序的 7 16 21 22 31 33 + 11
* */
public class DoubleBall {

private static Scanner sc = new Scanner(System.in);
private static int[] array = new int[7];
private static boolean judge = true;

public static void main(String[] args) {

while (judge) {
System.out.println("***************************************");
System.out.println("请选择操作:\n1.机选一次\n2.手动选择\n3.退出");
System.out.println("***************************************");

int choice = sc.nextInt();

switch (choice) {
case 1:
machine();
show();
break;
case 2:
hand();
show();
break;
case 3:
quit();
break;
default:
System.out.println("您输入的选项不正确,请检查");
break;
}
}

}

//打印出双色球的编号

private static void show() {

System.out.print("红球: ");
for (int i = 0; i < array.length - 1; i++) {
System.out.print(array[i] + " ");
}
System.out.print("\n蓝球:" + array[array.length - 1] + "\n");
}

//退出程序

private static void quit() {

judge = false;
System.out.println("已退出");

}

//手动选号,这种方法适合狗屎运旺盛的家伙

private static void hand() {
boolean ju;
do {
System.out
.println("请输入6个红球的编号(1-33)和1个蓝球的编号(1-16)\n请使用空格将输入的每个数字隔开");
for (int i = 0; i < array.length; i++) {
array[i] = sc.nextInt();
}
bubleSort(array);
if (!(ju=isArrayCorrect(array))) {
System.out.println("您输入的数字不合法");
}
} while (!ju);

}

//机器选号,省时省力,听天由命

 

 private static void machine() {

do {
for (int i = 0; i < array.length - 1; i++) {
array[i] = (int) (Math.random() * 33 + 1);
}
array[array.length - 1] = (int) (Math.random() * 16 + 1);
bubleSort(array);
} while (!isArrayCorrect(array));

System.out.println("您得到了以下随机编号:");

}

//传说中的冒泡排序,有木有高大上的赶脚

//要有这一步是因为彩票的编号习惯是从左到右数值依次增大

private static void bubleSort(int[] a) {

int temp = a[0];
for (int i = a.length - 3; i >= 0; i--) {
for (int j = 0; j <= i; j++) {
if (a[j] > a[j + 1]) {
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
}

//判断给定数组是否满足数字编号不重复、范围合法等要求

private static boolean isArrayCorrect(int[] a) {

for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < i; j++) {
if (array[j] == array[j + 1] || a[j] > 33 || a[j] < 1
|| a[a.length - 1] < 1 || a[a.length - 1] > 16) {
return false;
}
}
}
return true;
}

}

///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////

执行结果:

***************************************
请选择操作:
1.机选一次
2.手动选择
3.退出
***************************************
2
请输入6个红球的编号(1-33)和1个蓝球的编号(1-16)
请使用空格将输入的每个数字隔开
55 4 2 1 6 32 14
您输入的数字不合法
请输入6个红球的编号(1-33)和1个蓝球的编号(1-16)
请使用空格将输入的每个数字隔开
1

2 9 6 5 4 14
红球: 1 2 4 5 6 9
蓝球:14
***************************************
请选择操作:
1.机选一次
2.手动选择
3.退出
***************************************
1
您得到了以下随机编号:
红球: 12 15 16 23 25 32
蓝球:11
***************************************
请选择操作:
1.机选一次
2.手动选择
3.退出
***************************************
3
已退出

///////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////

第一次发表博文,希望大家支持

模拟彩票购票之——双色球

标签:

原文地址:http://www.cnblogs.com/binghandsom/p/4670073.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!