JAVA實驗四:寫一個彩票的模擬程式
阿新 • • 發佈:2018-11-24
題目
寫一個彩票的模擬程式:30選7。隨機(1~30之間)生成7個隨機數,注意不能重複。然後從鍵盤輸入7個數,對比7個數是否與隨機數有相同的。最後顯示“中了幾個號”。同時,如果中了7個號,顯示一等獎;如果中了6個號,顯示二等獎;如果中了5個號,顯示三等獎。要求:首先在註釋中寫出程式的實現思想,特別是程式所使用的資料結構,然後寫出Java實現程式碼。【說明:鍵盤輸入可以使用Scanner類】
答案1(推薦)
import java.util.*; /* 在第2種方法中,採用了List陣列的隨機排序方法,這樣就不需要剛開始非常麻煩地考慮數字重複的問題了; 然後將前7個存入到陣列中; 然後,將輸入的數字與陣列中的數字進行比較到底有幾個數字是重合的; */ public class Main { public static void main(String[] args) { ArrayList<Integer> l=new ArrayList<Integer>(); for(int i=0;i<31;i++) { l.add(i); } Collections.shuffle(l);//對容器中的數字隨機排序; System.out.println("7箇中獎數字是: "); int []a=new int[7]; for(int i=0;i<7;i++) { a[i]=l.get(i); System.out.print(l.get(i)+" "); } System.out.println(""); Scanner scan=new Scanner(System.in); System.out.println("您所挑選的7個數字是: "); int sum=0; for(int i=0;i<7;i++) { int in=scan.nextInt(); for(int j=0;j<7;j++) { if(in==a[j]) sum+=1; } } System.out.println("總共中了"+sum+"個號"); if(sum==7) System.out.println("恭喜您中了一等獎"); else if(sum==6)System.out.println("恭喜您中了二等獎"); else if(sum==5)System.out.println("恭喜您中了三等獎"); } }
答案2(不推薦)
import java.util.*; /* 在方法1中,思路比較簡單,生成隨機數,然後,想辦法,使得存放在陣列中的隨機數不重合; 然後,再將輸入的數字一個個放到另外一個數組中; 之後比較兩個陣列中到底有幾個數字是重合的; */ public class Main { public static void main(String[] args) { Random ra=new Random(); int []a=new int[7]; int []b=new int[7]; System.out.println("7箇中獎數字是: "); int r,r1=1; for(int i=0;i<7;i++) { r=ra.nextInt(31);//隨機生成數字; for(int k=0;k<a.length;k++)//控制生成的隨機數與原陣列中的數字不能重合; { if(r==a[k]) r1=0; } if(r1==1) a[i]=r; else i-=1; } for(int i=0;i<7;i++) { System.out.print(a[i]+" "); } System.out.println(""); Scanner scan=new Scanner(System.in); System.out.println("您所挑選的7個數字是: "); for(int i=0;i<7;i++) { b[i]=scan.nextInt(); } int sum=0; for(int i=0;i<7;i++) { for(int j=0;j<7;j++) { if(a[i]==b[j]) sum+=1; } } System.out.println("總共中了"+sum+"個號"); if(sum==7) System.out.println("恭喜您中了一等獎"); else if(sum==6)System.out.println("恭喜您中了二等獎"); else if(sum==5)System.out.println("恭喜您中了三等獎"); } }