Lotto 对奖程式
/* Lotto 对奖 */
import java.util.Arrays;
import java.util.Scanner;
public class LottoOnPrize {
final static int MAXNUM = 49; // 最大开奖号码
public static void main(String[] args) {
final int totalBall = 7; // 总开奖号码球数
int[] selectedNum = new int[totalBall]; // 选取的号码
int[] openedNum = new int[totalBall]; // 开奖的号码
int[] prizeNum = new int[totalBall]; // 中奖的号码
// 号码阵列初值化
initialArrayNum(selectedNum);
initialArrayNum(openedNum);
initialArrayNum(prizeNum);
// 取得输入选取号码
selectNum(selectedNum);
// 开奖
openNum(openedNum);
// 排序
Arrays.sort(openedNum);
Arrays.sort(selectedNum);
// 对奖
int onPrizeNum = onPrize(selectedNum, openedNum, prizeNum);
// 列印输出
System.out.println();
System.out.println("开奖号码是:");
printBallNum(openedNum);
System.out.println("你选取的号码是:");
printBallNum(selectedNum);
if ( onPrizeNum > 0 ) {
System.out.println("恭喜您中了" + onPrizeNum + "个号码奖.... !!! 中奖号码是:");
printBallNum(prizeNum);
}
else
System.out.println("您摃....龟了 !!!");
}
// 号码阵列初值化
private static void initialArrayNum(int[] a) {
for (int i=0; i<a.length; i++)
a[i] = 0;
}
// 产生号码 (1-49)
private static int getNum(int maxNum) {
return (int) Math.floor(Math.random() * maxNum) + 1;
}
private static void printBallNum(int[] a) {
for (int i=0; i<a.length; i++) {
if ( a[i] != 0 )
System.out.print(a[i] + "\t");
}
System.out.print("\n");
}
// 对奖
private static int onPrize(int[] Selected, int[] Opened, int[] Prized) {
int count = 0;
for (int i=0; i<Selected.length; i++) {
for (int j=0; j<Opened.length; j++) {
if (Selected[i] == Opened[j]) {
Prized[count] = Selected[i];
count++;
break;
}
}
}
return count;
}
// 开奖
private static void openNum(int[] a) {
int times = 0; // 第几次Counter
int inNum = 0;
while (times < a.length) {
inNum = getNum(MAXNUM);
if ( CheckBallNum(a, inNum) == 0 ) {
a[times] = inNum;
times = times + 1;
}
}
}
// 输入选取号码
private static void selectNum(int[] a) {
int times = 0; // 第几次Counter
int inNum = 0; // 输入号码
Scanner scan = new Scanner(System.in);
while (times < a.length) {
System.out.print("请输入你的第" + (times+1) + "个号码:");
inNum = scan.nextInt();
if ( CheckNum(a, inNum) ) {
a[times] = inNum;
times++;
}
}
}
// 选取号码检查
private static boolean CheckNum(int[] a, int num) {
int returnStatus = CheckBallNum(a, num);
if (returnStatus == 1)
System.out.println("你选择的号码:" + num + " 不在 1 到 " + MAXNUM + " 范围内 !!!");
else if (returnStatus == 2)
System.out.println("你选择的号码:" + num + " 重复了 !!!");
return (returnStatus == 0);
}
// 选取号码检查
private static int CheckBallNum(int[] a, int num) {
int result = 0;
if ((num < 1) || (num > MAXNUM))
result = 1;
else
{
for (int i = 0; i < a.length; i++) {
if (a[i] == num) {
result = 2;
break;
}
}
}
return result;
}
}