问题遇到的现象
系统选择的红球会出现重复
蓝球不产生随机数一直是0
/*问题相关代码
package 模拟综合双色球案例;
import java.util.Scanner;
import java.util.Arrays;
import java.util.Random;
/*
红01-33
蓝01-16
比较记录个数
公布结果
*/
public class StartClassA {
private static int blue=0;//用户蓝球
private static int red[] = new int[6];//用户选择的红球
private static int sysred[] = new int[6];//系统红球
private static int sysblue=0;//系统蓝球
private static int redcount=0;//记录选中红球次数
private static int bluecount=0;//记录选中蓝球次数
public static void main(String[] args) {
// TODO 自动生成的方法存根
ZhongJiangHaoMa(sysred, sysblue);
Buy(red, blue);
redJieGuo(sysred, red);
blueJieGuo(sysblue, blue);
jieguo(redcount, bluecount);
}
public static void ZhongJiangHaoMa(int[] sysred,int sysblue){
RedBall(sysred);
BlueBall(sysblue);
}
public static void Buy(int[] red, int blue){
//机选1还是手选2
System.out.println("输入1机选号码,输入2手选号码");
Scanner sc=new Scanner (System.in);
boolean flag= true;
while(flag){
int a=sc.nextInt();
switch(a){
case 1 :
RedBall(red);
BlueBall(blue);
flag=false;
break;
case 2 :
System.out .println("请输入6个不同的红球号码范围1-33");
for (int i=0; i<red.length; i++){
int temp=sc.nextInt();
if(Ishas(temp)){
i--;
System.out .println("你输入了重复号码请重新选择");
}else{
red[i]=temp;
}
}
System.out .println("请输入1个不蓝球号码范围1-16");
blue=sc.nextInt();
flag=false;
break;
default :
System.out.println("输入1机选号码,输入2手选号码");
break;
}
}
}
public static void BlueBall(int blue){//随机产生一个蓝色球
Random rand = new Random();
blue = rand.nextInt();
}
public static void RedBall(int []red){//随机产生6个不同的红色球
Random rand=new Random();
for(int i=0;i<red.length;i++){
int temp = rand.nextInt(33)+1;
if(Ishas(temp)){
i--;
}else{
red[i]=temp;
}
}
}
public static boolean Ishas(int num){//用于验证随机产生的数是否与已输入的一样
for(int i=0;i<red.length;i++){
if(num==red[i]){
return true;
}
}
return false;
}
public static int redJieGuo(int[] sysred, int[] red){
for(int i=0; i<red.length; i++){
for(int j=0; j<sysred.length; j++){
if(sysred[i] == red[j]){
redcount++;
}
}
}
return redcount;
}
public static int blueJieGuo(int sysblue, int blue){
if(sysblue==blue){
bluecount=1;
}
return bluecount;
}
public static void jieguo(int redcount,int bluecount){
if(redcount<3&&bluecount==0){
System.out.println("没中奖");
}else if((redcount==3&&bluecount==0)){
System.out.println("4等奖");
}else if((redcount==4&&bluecount==0)||(redcount==3&&bluecount==1)){
System.out.println("3等奖");
}else if((redcount==5&&bluecount==0)||(redcount==6&&bluecount==0)){
System.out.println("2等奖");
}else if(redcount==6&&bluecount==1){
System.out.println("1等奖");
}else {System.out.println("系统错误");
}
Arrays.sort(sysred);
Arrays.sort(red);
System.out.println("本期红球中奖号码\n"+Arrays.toString(sysred));
System.out.println("本期蓝球中奖号码\n"+sysblue);
System.out.println("红球号码\n"+Arrays.toString(red));
System.out.println("蓝球号码\n"+blue);
}
}
*/
运行结果及报错内容
输入1机选号码,输入2手选号码
1
系统错误
本期红球中奖号码
[7, 8, 10, 15, 24, 32]
本期蓝球中奖号码
0
红球号码
[14, 16, 18, 20, 21, 27]
蓝球号码
0
输入1机选号码,输入2手选号码
1
系统错误
本期红球中奖号码
[1, 15, 18, 18, 22, 27]
本期蓝球中奖号码
0
红球号码
[1, 5, 8, 10, 22, 26]
蓝球号码
0
18重复出现
我想要达到的结果
系统随机不重复出现红球
蓝球的随机数也显示出来
尝试修改 随机产生蓝球放置main 中
{ Random rand =new Random();
blue = rand.nextInt(16)+1;
sysblue=rand.nextInt(16)+1;
}可以产生随机的蓝球但是红球还会出现重复在