數組以及模擬雙色球開獎

雙色球開獎主要是數組的賦值以及電腦隨機數的產生

模擬雙色球開獎:


int money=0;


int [] cho=new int[6];//紅球

int[] last=new int[7];//最後選球結果

int ch=0;//籃球

String a="機選";

String b="自選";

Scanner in=new Scanner(System.in);

System.out.println("請輸入選擇方式,機選或者自選");

String c=in.next();

if(c.equals(b)){//控制選擇的方式爲手選

for(int i=0;i<cho.length;i++){//遍歷輸入數組的值,爲紅球號碼

System.out.println("請輸入第"+(i+1)+"個紅球");

cho[i]=in.nextInt();

if(cho[i]>33||cho[i]<1){//控制輸入的範圍

System.out.println("輸入超出號數限制,請重新輸入");

i--;

}

for(int j=0;j<i;j++){//控制輸入號碼不能重複

if(cho[i]==cho[j]){

System.out.println("輸入號碼與前面重複,請重熟入");

i--;

}

}

}

for(int i=1;i<2;i++){ //單獨輸入藍球

System.out.println("請輸入籃球號碼");

ch=in.nextInt();

if(ch>16||ch<1){//控制範圍

System.out.println("輸入超出限制,請重新輸入");

i--;

}

}

}

 else if(c.equals(a)){//控制選擇的方式爲機選,此後內容同理手選,只是將值改爲隨機

for(int i=0;i<cho.length;i++){

  cho[i]=(int)(Math.random()*33+1);//隨機產生數,遍歷賦值給數組

for(int j=0;j<i;j++){

if(cho[i]==cho[j]){

i--;

}

}

}

for(int i=1;i<2;i++){ 

ch=(int)(Math.random()*16+1);

}

}

for(int i=0;i<cho.length;i++){

 for(int j=(i+1);j<cho.length;j++){//對號碼進行選擇排序,同樣可以冒泡

if(cho[j]<cho[i]){

cho[i]=cho[i]^cho[j];

cho[j]=cho[i]^cho[j];

cho[i]=cho[i]^cho[j];

}

}

}

for(int i=0;i<last.length;i++){//將紅球與藍球同時放入一個數組

if(i<last.length-1){

last[i]=cho[i];

}

if(i==(last.length-1)){

last[i]=ch;

}

}

System.out.print("你選擇的號碼是:");

for(int i=0;i<last.length;i++){//輸出該數組作爲選擇的號碼

System.out.print(last[i]+" ");

}



int[]com=new int[7];//開獎數組

int[]com1=new int[6];

        int com2=0;

for(int i=0;i<com1.length;i++){//下面爲開獎號碼,與機選同理

com1[i]=(int)(Math.random()*33+1);

for(int j=0;j<i;j++){

if(com1[i]==com1[j]){

i--;

}

}

}

for(int i=1;i<2;i++){ 

com2=(int)(Math.random()*16+1);

}

for(int i=0;i<com1.length;i++){

for(int j=(i+1);j<com1.length;j++){

if(com1[j]<com1[i]){

com1[i]=com1[i]^com1[j];

com1[j]=com1[i]^com1[j];

com1[i]=com1[i]^com1[j];

}

}

}

for(int i=0;i<com.length;i++){

if(i<com.length-1){

com[i]=com1[i];

}

if(i==(com.length-1)){

com[i]=com2;

}

}

System.out.print("\n開獎號碼是:       ");

for(int i=0;i<com.length;i++){

System.out.print(com[i]+" ");

}

System.out.println("\n中獎結果:");

int count=0;

int count1=0;

for(int i=0;i<cho.length;i++){

for(int j=0;j<cho.length;j++){

if(com1[i]==cho[j]){

count++;

}

}

}

       if(ch==com2){

      count1=1;

       }

      if(count1==1){//開獎結果

     switch(count){

     case 0:

     case 1:

     case 2:System.out.println("恭喜你中了六等獎:5塊錢");break;

     case 3:System.out.println("恭喜你中了五等獎:10塊錢");break;

     case 4:System.out.println("恭喜你中了四等獎:200塊錢");break;

     case 5:System.out.println("恭喜你中了三等獎:3000塊錢");break;

     case 6:System.out.println("恭喜你中了一等獎:");break;

     }

      }

      else if(count1==0){

     switch(count){

     case 4:System.out.println("恭喜你中了五等獎:10塊錢");break;

     case 5:System.out.println("恭喜你中了四等獎:200塊錢");break;

     case 6:System.out.println("恭喜你中了二等獎:賺大了");break;

     default:System.out.println("什麼都沒得到,請再接再厲");break;

     

     }

      }

當然爲了減少代碼量這個題可以寫一個方法來調用機選方式,同時運用於開獎號碼。

深入思考題目,爲這個題增加點內容:由用戶守號,確定中獎時要買多少期,以及花了多少錢:

只需要將代碼稍作改變即可實現:


int pay=0;

int num=0;

    int [] cho=new int[6];//紅球

int[] last=new int[7];//最後選球結果

int ch=0;//籃球

String a="機選";

String b="自選";

Scanner in=new Scanner(System.in);

System.out.println("請輸入選擇方式,機選或者自選");

String c=in.next();

if(c.equals(b)){

for(int i=0;i<cho.length;i++){

System.out.println("請輸入第"+(i+1)+"個紅球");

cho[i]=in.nextInt();

if(cho[i]>33||cho[i]<1){

System.out.println("輸入超出號數限制,請重新輸入");

i--;

}

for(int j=0;j<i;j++){

if(cho[i]==cho[j]){

System.out.println("輸入號碼與 前面重複,請重新輸入");

i--;

}

}

}

for(int i=1;i<2;i++){ 

System.out.println("請輸入籃球號碼");

ch=in.nextInt();

if(ch>16||ch<1){

System.out.println("輸入超出限制,請重新輸入");

i--;

}

}

}

else if(c.equals(a)){

for(int i=0;i<cho.length;i++){

cho[i]=(int)(Math.random()*33+1);

for(int j=0;j<i;j++){

if(cho[i]==cho[j]){

i--;

}

}

}

for(int i=1;i<2;i++){ 

ch=(int)(Math.random()*16+1);

}

     }

for(int i=0;i<cho.length;i++){

for(int j=(i+1);j<cho.length;j++){

if(cho[j]<cho[i]){

cho[i]=cho[i]^cho[j];

cho[j]=cho[i]^cho[j];

cho[i]=cho[i]^cho[j];

}

}

}

for(int i=0;i<last.length;i++){

if(i<last.length-1){

last[i]=cho[i];

}

if(i==(last.length-1)){

last[i]=ch;

}

}

System.out.print("你選擇的號碼是:");

for(int i=0;i<last.length;i++){

System.out.print(last[i]+" ");

}

int[]com=new int[7];

int[]com1=new int[6];

        int com2=0;

for(;;){//由死循環控制一直開獎

num++;//由num計數開獎次數,同時等同於購買彩票次數

for(int i=0;i<com1.length;i++){

com1[i]=(int)(Math.random()*33+1);

for(int j=0;j<i;j++){

if(com1[i]==com1[j]){

i--;

}

}

}

for(int i=1;i<2;i++){ 

com2=(int)(Math.random()*16+1);

}

for(int i=0;i<com1.length;i++){

for(int j=(i+1);j<com1.length;j++){

if(com1[j]<com1[i]){

com1[i]=com1[i]^com1[j];

com1[j]=com1[i]^com1[j];

com1[i]=com1[i]^com1[j];

}

}

}

for(int i=0;i<com.length;i++){

if(i<com.length-1){

com[i]=com1[i];

}

if(i==(com.length-1)){

com[i]=com2;

}

}

int count=0;//此處往上代碼與,上題同理,此處count用於計數紅球中獎個數

int count1=0;//此處用於確定藍球是否中獎

for(int i=0;i<cho.length;i++){

for(int j=0;j<cho.length;j++){//紅球中獎一個則count增加一

if(com1[i]==cho[j]){

count++;

}

}

}

       if(ch==com2){//藍球中獎則count1爲1

      count1=1;

       }

      if(count1==1){

     switch(count){//pay記載每注中獎得金額合計

     case 0:

     case 1:

     case 2:pay+=5;break;

     case 3:pay+=10;break;

     case 4:pay+=200;break;

     case 5:pay+=3000;break;

     case 6:break;

     }

      }

      else if(count1==0){

     switch(count){

     case 4:pay+=10;break;

     case 5:pay+=200;break;

     case 6:pay+=500000;break;

     default:break;

     

     }

      }

      if(count1==1&&count==6){//中一等獎時紅球count爲6,count1爲1,此時輸出花掉的錢num*2,購買次數num,以及累計中獎金額。

     System.out.println("恭喜中得一等獎\n你總共買了彩票"+num+"次");

     System.out.println("總共中獎得錢:"+pay);

     System.out.println("總共花錢:"+num*2);

     break;

      }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章