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; } } |