我能理解你的思路,但做法有點(diǎn)小問題,這種做法就注定了不好判斷是否重復(fù),給你提供一種更好的思路
為樅陽等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及樅陽網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、樅陽網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
public?static?void?main(String[]?args)?{
int?a[]=new?int?[6];
int?b=(int)(Math.random()*15+1);
// abcd:
// while(true){
// for(int?i=0;ia.length;i++){
// ????a[i]=(int)(Math.random()*35+1);//這里不要直接把隨機(jī)出來的數(shù)放進(jìn)數(shù)組,沒法判斷
// }
// for(int?i=0;ia.length-1;i++){ //你是想在這里循環(huán)判斷是否重復(fù)吧,思路是對的,
// //但過程太亂讀不明白了,a.length為什么要-1
// for(int?j=0;ja.length-1;j++){
// System.out.println(i);
// System.out.println(j);
// if(a[i]!=a[j]i!=jia.length){
// //問題在這,第一次循環(huán)i=0,j=0,沒有問題
// //第二次循環(huán)i還=0,j=1了,那i肯定是不等j,所以必然break,根本沒法判斷
// System.out.println("----"?+?j);
// break?abcd;
// }
// }
// }
// }
//下面是我給你提供的方法
int[]?balls?=?new?int[35];//創(chuàng)建一個(gè)有35個(gè)長度的數(shù)組作為選球池
for(int?i=0;iballs.length;i++){
balls[i]?=?i?+?1;?//循環(huán)放入1至35
}
boolean[]?used?=?new?boolean[balls.length];//創(chuàng)建一個(gè)boolean數(shù)組,用于記錄是否重復(fù)
//長度和球池等長
for(int?i?=?0;ia.length;i++){//循環(huán)向a數(shù)組中放入元素
for(;;){
int?index?=?(int)(Math.random()*35);//生成一個(gè)隨機(jī)數(shù),這里不再+1了,因?yàn)殡S機(jī)的是下標(biāo),+1會(huì)出現(xiàn)越界
if(used[index]==true){?//如果used中,index的位置為true,則表示已經(jīng)被隨機(jī)過了
continue;//如果已經(jīng)被隨機(jī)過,則重新循環(huán)生成隨機(jī)數(shù)
}
a[i]?=?balls[index];//如果沒有被隨機(jī)過,則將index所對應(yīng)位置的元素放入a數(shù)組中
used[index]?=?true;//同時(shí)將該index位置設(shè)置為true,表示已經(jīng)被隨機(jī)過了
break;//退出當(dāng)前循環(huán),繼續(xù)下一次向a中添加元素
}
}
for(int?i=0;ia.length;i++){
for(int?j=0;ja.length-1-i;j++){
if(a[j]a[j+1]){
int?t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
// for(int?i=0;ia.length;i++){
// System.out.println(a[i]);
// }//輸出數(shù)組不需要這么麻煩
System.out.println(Arrays.toString(a));
System.out.println("藍(lán)色球?yàn)?+b);
}
int?sum=(int)?(Math.random()*33+1);??//利用Math中random方法的可以獲得1~33的隨機(jī)數(shù)
然后定義一個(gè)中獎(jiǎng)的容器數(shù)組來裝中獎(jiǎng)數(shù)字
設(shè)置一個(gè)過濾器(for循環(huán)遍歷中獎(jiǎng)容器嵌套if語句)來防止紅球中獎(jiǎng)數(shù)字重復(fù)
也就是說雙重for循環(huán) 外層取數(shù),內(nèi)層for循環(huán)過濾中獎(jiǎng)數(shù)字,
在外層循環(huán)定義一個(gè)計(jì)數(shù)器來控制循環(huán)的結(jié)束
藍(lán)球因?yàn)橹挥幸淮尉筒恍枰?/p>
import?java.util.Random;
public?class?PlayBall?{
private?int[] red =?new?int[6]; //?紅色球
private?int blue; //?藍(lán)色球
//?開獎(jiǎng)
public?void?open()?{
Random?random?=?new?Random();//?隨機(jī)數(shù)生成器,在java.util包里面
for?(int?i?=?0;?i??this.red.length;?i++)?{//?生成紅球
//?random.nextInt(int);這個(gè)方法用于隨機(jī)生成一個(gè)整數(shù),范圍在0-int之間
this.red[i]?=?random.nextInt(32)?+?1;
}
//?藍(lán)色球的取值范圍是1-16,調(diào)用nextInt(15)會(huì)生成一個(gè)0-15直接的數(shù),再加個(gè)1就是1-16了
this.blue?=?random.nextInt(15)?+?1;
//?輸出開獎(jiǎng)情況
for?(int?i?=?0;?i??this.red.length;?i++)?{
System.out.print(this.red[i]?+?"\t");
}
System.out.println("\r\n"?+?this.blue);
}
//?中獎(jiǎng),傳入號(hào)碼,匹配是否中獎(jiǎng),如果中獎(jiǎng)返回中的幾等獎(jiǎng),沒總返回-1
public?int?isMiddle(int[]?red,int?blue)?{
//?輸出投注號(hào)碼
for?(int?i?=?0;?i??red.length;?i++)?{
System.out.print(red[i]?+?"\t");
}
System.out.println("\r\n"?+?blue);
int?middle?=?0;//?記錄中了幾個(gè)球
if?(blue?==?this.blue)?{
middle?+=?1;//?藍(lán)色球中
}
for?(int?i?=?0;?i??red.length;?i++)?{
if?(red[i]?==?this.red[i])?{
middle?+=?1;//?紅色球中
}
}
if?(middle?!=?0)?{
if?(middle??4)?{
return?6;
}
else?if?(middle?==?4)?{
return?5;
}
else?if?(middle?==?5)?{
return?4;
}
else?if?(middle?==?6)?{
//?中6個(gè)球有兩種情況,5+1和6+0,5+1是三等獎(jiǎng),6+0是二等獎(jiǎng)
if?(blue?==?this.blue)?{
return?2;//?6+0中二等獎(jiǎng)
}
return?3;
}
else?if?(middle?==?7)?{
return?1;
}
}
//?沒中獎(jiǎng)
return?-1;
}
//?測試
public?static?void?main(String[]?args)?{
PlayBall?pb?=?new?PlayBall();
pb.open();
System.out.println("中獎(jiǎng):"?+?pb.isMiddle(new?int[]?{?1,?2,?3,?4,?5,?6?},?5));
}
}
回答個(gè)問題我還得去研究雙色球怎么中獎(jiǎng)的。。。這個(gè)代碼編譯一下就可以直接運(yùn)行了
public void main (String[] args){
int[] red=new int[7];
int blue=0;
for(int i=0;i7;i=i+1){
red[i]=getRandom(33);
//判斷重復(fù)
while(true){
boolean needcheck=false;
for(int k=0;ki;k=k+1) { if(red[i]==red[k]){ needcheck=true; }}
if(needcheck){red[i]=red[i]+1; if(red[i]==34){red[i]=1}}else{break;}
}
//判斷重復(fù)結(jié)束
}
//紅球賦值結(jié)束
blue=getRandom(16);
System.out.println("生成的紅球?yàn)椋?+ red[0]+red[1]+red[2]+red[3]+red[4]+red[5]+red[6]);
System.out.println("生成的藍(lán)球?yàn)椋?+ );
}
public int getRandom(int Max){
return Math.floor(Math.random()*33)+1;
}