JAVA--基礎前言開發

 

 

以雙色球爲例,模擬彩票系統。

1.用戶能夠選擇出票模式(1 機選   2 手選)java

2.若是選擇的是機選,則隨機生成六個紅球數字和一個藍球數字,git

說明六個紅球數字的範圍是1-33;藍球一個,數組

數字範圍是1-16dom

3.若是是機選 用戶還能夠選擇注數,若是選擇的是2注,測試

則隨機生成兩組雙色球spa

4.同時程序還得隨機生成中獎的雙色球 號碼。排序

5.用戶的雙色球和生成的中獎號碼,進行對比,並提示有沒有中獎,遞歸

中獎規則是: 一等獎:6+1 二等獎:6+0 三等獎:5+1 四等獎:5+0/4+1 五等獎:4+0/3+1 六等獎:2+1/1+1/0+1ci

6.若是是手選,則先收到輸入六個紅球數字 ,再輸入籃球數字,輸字符串

入完成則計算中獎結果並顯示。*/

 

import java.util.Random;

import java.util.Scanner;

 

public class ShuangSeQu1 {

    private  static  int[]ss;

    public  static void main(String[]args){

        ShuangSeQu1  list=new  ShuangSeQu1();

        ss=ShuangSeQu1.winArry();

        list.display();

 

    }

    public  void  display(){

        System.out.println("============以雙色球爲例,模擬彩票系統=========");

        System.out.println("===========請用戶選擇出票的方式1 機選   2 手選");

        Scanner  input=new Scanner(System.in);

        String  sgg=input.next();

        try {     //parseInt將字符串參數解析爲帶符號的十進制整數。

            int demo = Integer.parseInt(sgg);

            if(demo==1){

                System.out.println("=====請輸入注數");

                int zhu=input.nextInt();

                Jixuan(zhu);

 

            }else if(demo==2){

                System.out.println("手選");

            }else{

                System.out.println("=======出票方式只能是: 1 或者 2========");

                display();//遞歸方法,本身調用本身

            }

 

        }catch (Exception e){

            System.out.println("出票方式只能是數字");

            display();//遞歸方法,本身調用本身

        }

    }

    //機選選擇的注數

    public void Jixuan(int zhuNum){

        //定義一個二維數組

        int[][]arr=new int[zhuNum][7];//輸入幾注,生成幾組,而後一組裏面紅球加籃球是7個

       //隨機生成6個紅球數字,範圍1--33

        Random  r=new Random();

        //循環的次數等於須要生成的注數

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

            //生成6個紅球

            for(int j=0;j<6;j++){//紅球固定隨機生成6個

                int temp=r.nextInt(33)+1;

                //如何解決重複的問題

                //返回的是true。說明已存在,因此取反

                if(!Chongfu(arr,temp,i)){//調用Chongfu方法,當前數組是arr,生成的是temp,i

                    //若是if條件成立則往數組temp中放隨機生成的六個數

                    arr[i][j]=temp;

                }else{//表示已存在這個數,則i--在進行循環一次

                    j--;

                    continue;

                }

            }

            //生成藍球 也是隨機生成

            Random  R2=new Random();

            int blue=R2.nextInt(16)+1;

            //把籃球存儲到最後, 由於最後一個爲第7個球。因此最大下標爲6

            arr[i][6]=blue;

        }

        //測試是否能夠生成多注,保存到二維數組中;

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

            System.out.println("第"+(i+1)+"注的紅球");

            //經過冒泡排序對一維數組中的前六個元素進行升序的排列

            int n=arr[i].length-1;

            for(int m=0;m<n;m++){

                for(int j=0;j<n-m-1;j++){

                    if(arr[i][j]>arr[i][j+1]){

                        int temp=arr[i][j];

                        arr[i][j]=arr[i][j+1];

                        arr[i][j+1]=temp;

                    }

                }

            }

 

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

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

                }

            System.out.println("第"+(i+1)+"注的藍球:"+arr[i][6]);

        }

        Iswin(arr);

    }

    //隨機生成中獎的號碼

    public  static  int []  winArry(){

        Random  sd1=new Random();

        int []winArry=new int[7];

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

            int temp=sd1.nextInt(33)+1;

            if(!Valtrue(winArry,temp)){

                winArry[i]=temp;

            }else{

                --i;

                continue;

            }

        }

        int n=winArry.length-1;

        for(int m=0;m<n;m++) {

            for (int j = 0; j < n - m - 1; j++) {

                if (winArry[j] > winArry[j + 1]) {

                    int temp = winArry[j];

                    winArry[j] = winArry[j + 1];

                    winArry[j + 1] = temp;

                }

            }

        }

        //生成籃球

        Random  sdf=new Random();

        int blue=sdf.nextInt(16)+1;

        winArry[6]=blue;

        System.out.println("=========系統生成的中獎號碼是=======");

        System.out.print("紅球: ");

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

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

        }

        System.out.println("藍球: "+ winArry[6]);

        System.out.println();

         return   winArry;

    }

    //判斷是否中獎,用戶機選或者手選的數據

    public void Iswin(int[][]array){

        //獲取中獎的

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

            int redcount=0;

            int bluecount=0;

            //判斷紅球中獎的個數

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

                if(array[i][j]==ss[j]){

                    redcount++;

                }

            }

            //判斷藍球中獎的個數

            if(array[i][6]==ss[6]){

                 bluecount++;

            }

            //判斷是否中獎

            if(redcount==6&&bluecount==1){

                System.out.println("第"+(i+1)+"注中了【一等獎】");

            }else if(redcount==6&&bluecount==0){

                System.out.println("第"+(i+1)+"注中了【二等獎】");

            }else if(redcount==5&&bluecount==1){

                System.out.println("第"+(i+1)+"注中了【三等獎】");

            }else if((redcount==5&&bluecount==0)||(redcount==4&&bluecount==1)){

                System.out.println("第"+(i+1)+"注中了【四等獎】");

            }else if((redcount==4&&bluecount==0)||(redcount==3&&bluecount==1)){

                System.out.println("第"+(i+1)+"注中了【五等獎】");

            }else if((redcount==2&&bluecount==1)||(redcount==3&&bluecount==1)||(redcount==0&&bluecount==1)){

                System.out.println("第"+(i+1)+"注中了【六等獎】");

            }else{

                System.out.println("========很遺憾,您未中獎=======");

            }

        }

 

    }

    //驗證隨機生成的紅球

    public  static  boolean  Valtrue(int[]n1,int key){

        boolean flage=false;

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

            if(n1[i]==key){

                flage=true;

                break;

            }

        }

        return flage;

    }

 

    //驗證字符串是不是數字;

    public boolean simsplay(String str){

        boolean flage=false;

          char[]a=str.toCharArray();

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

              if(Character.isDigit(a[i])){//判斷給定的字符是否爲數字,若是是,返回true

                  flage=true;

              }else{

                  flage=false;

                  break;

              }

          }

          return flage;

    }

    //定義一個方法用來判斷隨機生成的數去重複

    //int[]nums 原數組,key 隨機生成的數字 ,i表示的是循環的一維數組的下標

    public  boolean Chongfu(int[][]nums,int key,int i){

        boolean flage=false;

        for(int j=0;j<nums[i].length;j++){

            if(nums[i][j]==key){

                flage=true;//true 表示返回一個相同的,若是是false 則沒有相同的

                break;

            }

        }

        return  flage;

    }

}

相關文章
相關標籤/搜索