课程小题目制作一个双色球自动生成小程序
要求:
1.可选择自动生成或者手动输入
2.红色球号不能有重复,且红色号范围(1~33)蓝色号范围(1~16)
3.并能够验证是否规范(我个人理解是能解析出号码是否在该范围内且不重复)
程序如下:
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class DoubleColorBall {
public static void main(String[] args) {
//随机数生成红球并存入数组
Random number = new Random();
int num = 0;
//红球数组
int[] red = new int[6];
//蓝球数组
int bluenum = 0;
//设置电脑自动生成或者用户自己选择
Scanner scanner = new Scanner(System.in);
System.out.println("请选择您所需的服务!");
System.out.println("1.自己选号");
System.out.println("2.自动选号");
int choice = scanner.nextInt();
//手动输入数值
if(choice==1) {
for(int i=0;i<red.length;i++) {
//循环键盘输入红球数值
System.out.println("红色号码范围为1~33");
System.out.println("请输入用户所选的红色号码第"+(i+1)+"个");
red[i] = scanner.nextInt();
//判断红球数值是否符合范围要求
while(red[i]<1 || red[i]>33) {
System.out.println("请输入正确的数值!(1~33)");
red[i] = scanner.nextInt();
}
//判断输入值是否有重复
for(int j=i-1;j>=0;j--) {
while(red[j]==red[i]) {
System.out.println("请不要输入重复值");
System.out.println("请输入用户所选的红色号码第"+(i+1)+"个");
red[i] = scanner.nextInt();
//判断重新输入值后是否符合要求
while(red[i]<1 || red[i]>33) {
System.out.println("请输入正确的数值!(1~33)");
red[i] = scanner.nextInt();
}
}
}
}
//对数组进行排列
Arrays.sort(red);
//输入蓝球数值
System.out.println("请输入用户所选的蓝色号码1~16");
bluenum = scanner.nextInt();
//判断蓝球是否符合范围
while(bluenum<1 || bluenum>16) {
System.out.println("请输入正确的数值!(1~16)");
bluenum = scanner.nextInt();
}
}
//自动输入数值
if(choice==2) {
while(num<red.length) {
//设置红球随机数的范围1~33
int rednum = number.nextInt(33)+1;
//判断随机数组中是否存在重复数字
if(!(Arrays.binarySearch(red, rednum) >= 0)) {
red[0] = rednum;
num++;
}
Arrays.sort(red);
}
//设置蓝球的随机数范围为1~16
bluenum = number.nextInt(16)+1;
}
//输出双色球号
System.out.print("红球号码为:");
for(int i=0;i<red.length;i++) {
System.out.print(red[i]+" ");
}
System.out.print("蓝球号码为:"+bluenum);
}
}