1. 程式人生 > >JAVA實驗四:寫一個彩票的模擬程式

JAVA實驗四:寫一個彩票的模擬程式

題目

寫一個彩票的模擬程式: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("恭喜您中了三等獎");
	}
}