一、练习目标
1.掌握数据类型和运算符
2.掌握流程控制
3.掌握数组
4.掌握方法的定义和调用
5.提高代码调试能力
全部讲解和练习时间控制在4小时以内
二、项目需求
双色球投注区分为红色球号码区和蓝色球号码区,
红色球号码区由1-33共33个号码组成,蓝色球号码区由1-16共16个号码组成。
投注时选择6个红球号码和1个蓝球号码组成一注进行单式投注,每注金额2元。
一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖;
二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖;
三等奖:投注号码与当期开奖号码中的任意5个红色球号码和1个蓝色球号码相同,即中奖;
四等奖:投注号码与当期开奖号码中的任意5个红色球号码相同,或与任意4个红色球号码和1个蓝色球号码相同,即中奖;
五等奖:投注号码与当期开奖号码中的任意4个红色球号码相同,或与任意3个红色球号码和1个蓝色球号码相同,即中奖;
六等奖:投注号码与当期开奖号码中的1个蓝色球号码相同,即中奖。
显示中奖结果的同时显示您一共下注人民币??元,累计中奖人民币??元
三、提供的素材
1.关键代码截图
四、实施步骤
1.教师说明练习目标、项目需求,运行项目
2.教师讲解代码开发思路和步骤
3…给学生提供代码截图,而不是提供代码
4.学生根据截图实现代码,根据编译信息调试错误
5.期间穿插已完成学生展示效果
五、编写代码步骤
1.实现主菜单显示和选择
2.实现主菜单循环显示和选择
3.完成购买彩票操作
4.完成查看开奖主要步骤
5.完成完整查看开奖操作
六、学生扩展
1.实现机选号码功能
import java.util.Arrays;
import java.util.Scanner;
public class DoubleBall {
//双色球的数组 自选的双色球数组
static int[] dbBall = new int[6];
static int blueB = 0;
//正确的双色球数组
static int[] cdbBall = new int[6];
static int cblueB = 0;
//下注数
static int n = 0;
//单注奖金
static int money = 5000000;
/**
* 彩票主页
*/
public static void index(){
System.out.println("------尚学堂彩票站-------");
System.out.println(" 1:买彩票");
System.out.println(" 2:开奖");
System.out.println(" 3:退出");
System.out.println("----------------------");
Scanner sc = new Scanner(System.in);
System.out.println("请选择[1-3]");
int num = sc.nextInt();
switch(num){
case 1:buyBall();break;
case 2:lottery();break;
case 3:System.out.println("欢迎下次光临");return;
default:System.out.println("请重新输入");index();
}
}
/**
* 买彩票
* @param args
*/
public static void buyBall(){
Scanner sc = new Scanner(System.in);
System.out.println("请下注 1注2元");
//下注的数字
n = sc.nextInt();
System.out.println("1:机选 2:手选");
int num = sc.nextInt();
if(num==1){
buyBall1(); //机选
}else if(num==2){
buyBall2(dbBall); //手选
}else{
System.out.println("数字有误");
buyBall();
}
}
/**
* 机选
*/
public static void buyBall1() {
//红球的范围1-33 不能重复 总共6个
int count = 0;
for(int i=0;;i++){
boolean flag = true;//状态值,初始值为true
int red = (int)(Math.random()*33)+1;
for(int j = 0;j<dbBall.length;j++){
//开始判断是否有重复的球
if(red==dbBall[j]){
flag=false; //如果有重复值,flag变为false
break;
}
}
//判断随机数是否有重复,flag为true代表没有重复
if(flag){
dbBall[count++] = red;
}
//当红球全都放入数组后,跳出大的循环
if(dbBall[5]!=0){
break;
}
}
//蓝球的范围1-16 总共1个
blueB = (int)(Math.random()*16)+1;
Arrays.sort(dbBall); //数组排序
System.out.println("机选号码:"+Arrays.toString(dbBall)+"["+blueB+"]");
index();//返回主界面
}
/**
* 手选
*/
public static void buyBall2(int[] dbBall) {
}
/**
* 开奖
* @param args
*/
public static void lottery(){
//机器生成正确的彩票号码
int count = 0;
for(int i=0;;i++){
boolean flag = true;//状态值,初始值为true
int red = (int)(Math.random()*33)+1;
for(int j = 0;j<cdbBall.length;j++){
//开始判断是否有重复的球
if(red==cdbBall[j]){
flag=false; //如果有重复值,flag变为false
break;
}
}
//判断随机数是否有重复,flag为true代表没有重复
if(flag){
cdbBall[count++] = red;
}
//当红球全都放入数组后,跳出大的循环
if(cdbBall[5]!=0){
break;
}
}
//蓝球的范围1-16 总共1个
cblueB = (int)(Math.random()*16)+1;
Arrays.sort(cdbBall); //数组排序
System.out.println("开奖号码:"+Arrays.toString(cdbBall)+"["+cblueB+"]");
winningPrize();
}
/**
* 中奖功能
*/
public static void winningPrize(){
int count = 0;
for(int i=0;i<dbBall.length;i++){ //机选号码
for(int j=0;j<cdbBall.length;j++){
if(dbBall[i]==cdbBall[j]){
count++; //红球正确个数的计数器
break;
}
}
}
//蓝球 的判断
boolean blue = (blueB == cblueB);
if(count==6&&blue){
System.out.println("一等奖:"+(n*money));
}else if(count==6){
System.out.println("二等奖:"+(n*money*0.25));
}else if(count==5&&blue){
System.out.println("三等奖:"+(n*3000));
}else if(count==5||(count==4&&blue)){
System.out.println("四等奖:"+(n*200));
}else if(count==4||(count==3&&blue)){
System.out.println("五等奖:"+(n*10));
}else if(blue){
System.out.println("六等奖:"+(n*5));
}else{
System.out.println("未中奖,谢谢惠顾");
}
index();
}
public static void main(String[] args) {
index();
}
}