黑马程序员技术交流社区

标题: 模拟彩票 [打印本页]

作者: 程序员的崛起    时间: 2016-6-5 09:25
标题: 模拟彩票
/*
模拟彩票:
                随机生成6个0-15的数字,再从键盘录入6个0-15的数字,
当随机生成的数字和键盘录入的数字:
                3个一样,中三等奖
                4个一样,中二等奖
                5个一样,中一等奖
                全部一样,中特等奖
               
                最终打印样式如下:
                        "您的号码为XX,XX,XX,XX,XX,XX,中了X等奖,恭喜您!"或者
                        "您的号码为XX,XX,XX,XX,XX,XX,没有中奖,!"
*/


import java.util.ArrayList;
import java.util.Collections;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class LotteryDemo2 {
        //存放0-15的集合
        static ArrayList<Integer> allNum =new ArrayList<Integer>();
        //存放6个不重复的彩票号码的集合
        static ArrayList<Integer> lotteryNum =new ArrayList<Integer>();
        //存放用户猜测6个数字的集合
        static ArrayList<Integer> userNum =new ArrayList<Integer>();
        static Random rd =new Random();
        static Scanner sc =new Scanner(System.in);
        public static void main(String[] args) {
                //调用方法给allNum集合赋值
                setAllNum();
                //调用方法给lotteryNum集合赋值
                setLotteryNum();
                //调用方法给userNum集合赋值
                setUserNum();
                //调用方法,输出彩票中奖结果
                getResult();
               
        }

        //将0-15数字存放到allNum集合中去
        public static void setAllNum(){
                for (int i = 0; i < 16; i++) {
                        allNum.add(i);
                }
        }
        //将6个不重复的彩票号码放到lotteryNum集合中去
        private static void setLotteryNum() {
                for (int i = 0; i < 6; i++) {
                        //随机得到allNum集合的角标
                        int index = rd.nextInt(allNum.size());
                        //每循环一次,allNum集合就移出指定角标的数字,集合长度减一,;并将移出的数字赋值给lotteryNum集合
                        int value = allNum.remove(index);
                        lotteryNum.add(value);
                }
                //得到集合后给集合中的数字进行排序
                Collections.sort(lotteryNum);
        }
        //将用户输入的6个不重复的0-15之间的数字放到userNum集合中去
        private static void setUserNum() {
                for (int i = 0; i <6; i++) {
                        System.out.println("请输入您猜测的0-15之间的彩票号码:");
                        //用户键盘录入数字
                        int guess = sc.nextInt();
                        //对用户录入的数字进行判断,合法则添加到userNum集合中去,不合法则重新输入
                        if(guess>15||guess<0){//如果录入的数字没在0-15之间,让用户重新输入,指针i--,保证用户输入6个不重复的数字
                                System.out.println("您输入的数字是"+guess+",没在0-15之间,请重新输入:");
                                i--;
                        }else{
                                if(userNum.contains(guess)){
                                        System.out.println("您输入的数字是"+guess+",已经输入过了,请重新输入:");
                                        i--;
                                }else{
                                        userNum.add(guess);
                                }
                        }
                }
                //将userNum集合排序
                Collections.sort(userNum);
        }
        private static void getResult() {
                //遍历userNum和lotteryNum集合,判断有多少一样 的数字
                                int sameNumber = 0;
                                for (Integer user : userNum) {
                                        for(Integer lottery: lotteryNum){
                                                if(user==lottery){
                                                        sameNumber++;
                                                }
                                        }
                                }
                                //拼接得奖结果字符串
                                System.out.print("您的号码为");
                                for (Integer i: userNum) {
                                        System.out.print(i+",");
                                }
                               
                                switch(sameNumber){
                                case 3:
                                        System.out.println("中三等奖,恭喜您");
                                        break;
                                case 4:
                                        System.out.println("中二等奖,恭喜您");
                                        break;
                                case 5:
                                        System.out.println("中一等奖,恭喜您");
                                        break;
                                case 6:
                                        System.out.println("中特等奖,恭喜您");
                                        break;
                                default :
                                        System.out.println("没有中奖!");
                                }
        }
}

作者: woshijingke    时间: 2016-6-5 12:58
学习。。。。。。
作者: My_Android    时间: 2016-6-5 13:00
恩,可以的,66哒
作者: 风起tiannan    时间: 2016-6-5 13:03
学习学习,
作者: 骄阳登峰    时间: 2016-6-5 14:02
不错,赞一个,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2