双色球机选算法java实现,闲来无事简单写了写,写完也搜了搜基本上都是大同小异。。。
package com.shr.test;
import java.util.Arrays;
import java.util.Scanner;
public class RedBlueBall {
/**
* 双色球
*
* @param args
*/
public static void main(String[] args) {
// 创建键盘录入对象
Scanner scanner = new Scanner(System.in);
System.out.println("“1”为手动输入,“2”为机选");
int type = scanner.nextInt();
if (type == 1) {
input();
} else if (type == 2) {
random();
}
}
/**
* 机选双色球
*/
public static void random() {
// 创建一个六位数的数组,用于装载结果
int redBlueBall[] = new int[6];
// 创建一个33位的数组,用于装载红色球的数字
int[] redBalls = new int[33];
// 创建一个Boolean数组记录下标是否随即过防止红色球重复
boolean[] used = new boolean[redBalls.length];
// 循环放入1至33到红色数组
for (int i = 0; i < redBalls.length; i++) {
redBalls[i] = i + 1;
}
// 蓝色球 15+1是防止0的出现
int blueBall = (int) (Math.random() * 15 + 1);
// 循环向redBalls数组中放入元素
for (int i = 0; i < redBlueBall.length; i++) {
while (true) {
// 生成一个随机数33以内的下标
int index = (int) (Math.random() * 33);
if (used[index] == true) {
continue;
}
// 存入结果
redBlueBall[i] = redBalls[index];
// 随机过的下标进行标记
used[index] = true;
break;
}
}
// 将得到的数进行排序
Arrays.sort(redBlueBall);
System.out.println("您选的红色球为:" + Arrays.toString(redBlueBall) + ",蓝色球为:"
+ blueBall);
}
/**
* 手动输入双色球
*/
public static void input() {
// 创建一个六位数的数组,用于装载结果
int redBall[] = new int[6];
// 创建一个int用于装载蓝色球
int blueBall = 0;
// 创建键盘录入对象
Scanner scanner = new Scanner(System.in);
// 创建一个Boolean数组记录下标是否随即过防止红色球重复
boolean[] used = new boolean[33];
System.out.println("请输入6个1~33不重复的数字,作为红色球:");
for (int i = 0; i < redBall.length; i++) {
int red = scanner.nextInt();
if (red < 1 || red > 33) {
System.out.println("请输入正确的数字:");
i--;
continue;
} else if (used[red] == true) {
System.out.println("请输入正确不重复的数字:");
i--;
continue;
}
redBall[i] = red;
used[red] = true;
}
System.out.println("请输入1个1~16的数字,作为蓝色球:");
for (int i = 0; i < 1; i++) {
int ball = scanner.nextInt();
if (ball < 1 || ball > 16) {
System.out.println("请输入正确的数字:");
i--;
continue;
}
blueBall = ball;
}
// 将数组进行排序
Arrays.sort(redBall);
System.out.println("您选的红色球为:" + Arrays.toString(redBall) + ",蓝色球为:"
+ blueBall);
}
}