黑马程序员技术交流社区
标题:
模拟双色球
[打印本页]
作者:
彭卫红
时间:
2014-8-30 23:07
标题:
模拟双色球
package Chapter08.Loans;
import java.util.Vector;
//购买双色球的人
public class Buyer {
Vector v = new Vector();
static int n = 0; // 一个中间变量
int order = 0; // 购彩人的编号
public Buyer() { // 利用该类的构造方法为编号赋值
n++;
order = n;
}
void buyLoans() { // 购买彩票
while (true) {
Loans loa = new Loans(); // 购买一次就创建一次Loans对象
loa.getLoans(); // 调用Loans类中的getLoans方法
v.add(loa); // 将Loans对象加到Vector中
System.out.println("您是否继续购买彩票?[0:退出]");
int cmd = ChooseNumbers. getInt ();// 调用ChooseNumbers的scanInt方法
if (cmd == 0) // 结束while循环
break;
}
System.out.println("祝您好运,欢迎您下次再来!");
}
void print() {
for (int i = 0; i < v.size(); i++) {
Loans temp = (Loans) v.get(i);
temp.print();
}
}
}
package Chapter08.Loans;
import java.io.BufferedReader;
import java.io.InputStreamReader;
//选取号码
public class ChooseNumbers {
public static String entry() {
String str = "";
try {
BufferedReader buf = new BufferedReader(new InputStreamReader(
System.in));// 创建BufferedReader缓存字符输入流
str = buf.readLine();// 从键盘上读取一行数据
} catch (Exception e) {
}
return str;
}
public static int getInt()// 从键盘上录入一个整型数据
{
int temp = 0;
while (true) {
try {
temp = Integer.parseInt(entry()); // 将字符串转换成int型
break;
} catch (Exception e) {
System.out.println("请输入一个整数:" + e.getMessage());
}
}
return temp;
}
}
package Chapter08.Loans;
import java.util.StringTokenizer;
//所购买的彩票号码
public class Loans {
int buyer[] = new int[7];//创建一个int型数组,用于存放选好的7个双色球号码
int level = 0;//标志中奖的等级
int num = 0;//标志选好的单个号码
void getLoans() {//获取选好的七个号码
System.out.println("请输入您购买的7个彩票号码,并以空格隔开:");
StringTokenizer src = new StringTokenizer(ChooseNumbers.entry(), " ");//将字符串以空格的形工式分解开
int i = 0;
while (src.hasMoreTokens()) {
num = Integer.parseInt(src.nextToken());
if (i < 6) {//判断前6个号码是否符合红球的选号范围内
if (num < 0 || num > 33) {
System.out.println("红球号码录入有误,红球号码必须在1~33之间选取");
break;
}
} else if (i == 6) {//判断最后一个号码是否符合蓝球的选号范围内
if (num < 0 || num > 16) {
System.out.println("蓝球号码录入有误,蓝球号码必须在1~16之间选取");
break;
}
}
buyer[i] = num;
i++;
}
}
void print() {
for (int i = 0; i < 7; i++) {
System.out.print(buyer[i] + " ");
}
System.out.println();
}
}
package Chapter08.Loans;
import java.util.Vector;
//彩票投注站也就是售彩票的地方
public class Lottery {
Vector v = new Vector();
int winnum[] = new int[7];//定义一个int型数组用来存储中奖的号码
void sellLoans()// 卖彩票给彩民
{
while (true) {
Buyer cm = new Buyer();
cm.buyLoans();
v.add(cm);
System.out.println("是否还有彩民需要购买?[0:退出]");
int cmd = ChooseNumbers.getInt();
if (cmd == 0)
break;
}
}
void showLoans()// 公布中奖号码
{
System.out.println("公布本期的中奖号码为:");
for (int i = 0; i < winnum.length; i++) {
winnum[i] = (int) (Math.random() * 35 + 1);
for (int j = 0; j < i; j++) {
if (winnum[i] == winnum[j])
i--;
}
System.out.print(winnum[i] + " ");
}
System.out.println();
}
void totalInfo()// 统计中奖情况
{
for (int i = 0; i < v.size(); i++) {
Buyer cm = (Buyer) v.get(i);
totalBuyer(cm);
}
}
void totalBuyer(Buyer cm)// 统计一个彩民的中奖情况
{
for (int i = 0; i < cm.v.size(); i++) {
Loans loa = (Loans) cm.v.get(i);
totalLoans(loa);
}
}
void totalLoans(Loans loa)// 统计一批彩票的中奖情况
{
for (int i = 0; i < 7; i++)
for (int j = 0; j < 7; j++)
if (loa.buyer[i] == winnum[j]) {
loa.level++;
break;
}
}
void prize()// 兑换奖品
{
for (int i = 0; i < v.size(); i++) {
Buyer cm = (Buyer) v.get(i);
winner(cm);
}
}
void winner(Buyer cm)// 中奖的人
{
System.out.println("彩民[" + cm.order + "]:");
for (int i = 0; i < cm.v.size(); i++) {
Loans loa = (Loans) cm.v.get(i);
prizeMoney(loa);
}
}
void prizeMoney(Loans loa)// 中奖的金额
{
switch (loa.level) {
case 6:
System.out.println("恭喜您中了一等奖,中奖金额为500万元!");
break;
case 5:
System.out.println("恭喜您中了二等奖,单注奖金额为63万元!");
break;
case 4:
System.out.println("恭喜您中了三等奖,单注奖金额为3000元!");
break;
case 3:
System.out.println("恭喜您中了四等奖,单注奖金额为200元!");
break;
case 2:
System.out.println("恭喜您中了五等奖,单注奖金额为10元!");
break;
case 1:
System.out.println("恭喜您中了六等奖,单注奖金额为5元!");
break;
default:
System.out.println("谢谢您的参与,祝您下次好运!");
break;
}
}
}
package Chapter08.Loans;
//测试类
public class TestCase {
public static void main(String[] args) {
Lottery lot = new Lottery(); // 创建一个Lottery类
lot.sellLoans(); // 调用Lottery类的sellLoans方法,其主要作用是将彩票卖给购彩的人们
lot.showLoans(); // 调用Lottery类的showLoans方法,其主要作用公布该期的中奖号码
lot.totalInfo(); // 调用Lottery类的totalInfo方法,其主要作用是统计中奖的情况
lot.prize(); // 调用Lottery类的prize方法,其主要作用是中奖人到彩票投注站去兑换奖金
}
}
复制代码
作者:
彭卫红
时间:
2014-8-30 23:08
代码要多敲,多练。思路要多想,多看。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2