双色球当今时代很是流行,笔者觉得这种游戏比较简单适合于我这样初级水平的人研究,所以闲暇之余将自己思路展现给大家,不能说是分享,因为并非佳品。目的很单纯,就是扔一块硬臭砖头,希望能有幸看到玉石的纯洁光芒。对于其中的不足,欢迎读者的批评和赐教。
双色球的投注规则有很多,这里只研究单注的情形。
双色球单注下注规则如下:
双色球投注区分为红球号码区和蓝球号码区,红球号码范围为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
已退出
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
第一次发表博文,希望大家支持
时间: 2024-10-14 08:41:19