当前位置: 首页 > news >正文

JAVA的双色球 小程序

  还是挺简单的,功能过于强大。

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class doubleRedBall {
    private static Scanner inputScanner;
    /**
     * 顺着思路写 就行
     * 
     * */

    public static void main(String[] args) {
        // 定义相关变量
        int[] userRedBall = new int[6]; //用户生成的红球号码
        int[] sysRedBall = new int[6];// 系统生成的红球号码
        int userBlueBall = 0;    //用户选择的蓝球
        int sysBlueBall = 0;    //系统生成的蓝球
        int redCount = 0,blueCount = 0;//用户选择正确的红球数和蓝球数。
        int[] redBall = new int[33];
        inputScanner = new Scanner(System.in);
        Random random = new Random();
        //需要随机生成6个在1-33之间不重复的数(算法)
        for(int i=0;i<redBall.length;i++) {
            redBall[i] = i+1;
        }
        //游戏开始,系统提示。
        System.out.println("定个小目标,先中它一个亿!");
        System.out.println("打算自选号码,还是首选号码? \n请输入\"机选\"或\"手选\"。");
        Boolean answerRight = false;
        while (!answerRight) {
            String choose = inputScanner.next();
            answerRight = true; // 下次默认跳出while
            switch (choose) {
            case "机选":
                computerSelection(redBall, userRedBall);
                userBlueBall = random.nextInt(16) + 1;
                break;
            case "手选":
                System.out.println("请选择6个红球号码(1-33):");
                for(int i=0;i<userRedBall.length;i++) {
                    System.out.println("输入第"+(i+1)+"个号码:");
                    userRedBall[i] = inputScanner.nextInt();
                    if(userRedBall[i]<1|userRedBall[i]>33) {
                        System.out.println("输入有误,请重新输入");
                        i--;
                    }
                }
                System.out.println("请选择1个蓝球号码(1-16):");
                userBlueBall = inputScanner.nextInt();
                
                break;
            default:
                System.out.println("输入有误!请输入\"机选\"或\"手选\"。");
                answerRight = false; // 输入不合法,继续while。
                break;
            }
        }// 至此 用户 球号确定
        //系统随机生成号码。
        computerSelection(redBall, sysRedBall);//虽然 redBall 的顺序变了 但是不影响乱序生成
        sysBlueBall = random.nextInt(16)+1;
        //至此  系统球号确定。
        for(int i=0;i<userRedBall.length;i++) {
            for(int j=0;j<sysRedBall.length;j++) {
                if(userRedBall[i]==sysRedBall[j]) {
                    redCount++;
                }
            }
        }
        if(userBlueBall==sysBlueBall) {
            blueCount++;
        }
        System.out.println("红球一致个数:"+redCount);
        System.out.println("蓝球一致个数:"+blueCount);
        //公布中奖号码
        System.out.println("本期中奖红球号码:");
        Arrays.sort(sysRedBall);
        System.out.println(Arrays.toString(sysRedBall));
        System.out.println("本期中奖蓝球号码:"+sysBlueBall);
        //公布用户号码
        System.out.println("您选择的红球号码:");
        Arrays.sort(userRedBall);
        System.out.println(Arrays.toString(userRedBall));
        System.out.println("您选择的蓝球号码:"+userBlueBall);
        
    }
    //用于在指定数列中 随机生成多个不重复的数的算法。
    /**
     * @param balls 给定的需要在其中选出6个元素的数组
     * @param redBall 存储选出的6个元素的数组
     * 传进来的 ball userRedBall 都会改变。
     */
    public static void computerSelection(int[] balls,int[] userRedBall) {
        
        Random random = new Random();
        int index = -1;
        for(int i=0;i<userRedBall.length;i++) {
             index = random.nextInt(balls.length-1-i);
             userRedBall[i] = balls[index];
             
             balls[index] = balls[index]^balls[balls.length-1-i];
             balls[balls.length-1-i] = balls[index]^balls[balls.length-1-i];
             balls[index] = balls[index]^balls[balls.length-1-i];
        }
        // 此时得到的 userRedBall 就是选出的六个不重复的红球。
    }
    /**
     * @param first
     * @param second
     * @return
     * 尽量优化速度,之后的结果 nlogn 的速度。
     */
    public static int compSame(int[] first,int[] second) { 
        int lenFirst = first.length,lenSecond = second.length;
        int sameNum=0;
        for(int i=0;i<lenFirst;i++) {
            if(Arrays.binarySearch(second, first[i])>=0&Arrays.binarySearch(second, first[i])<lenSecond) {
                sameNum++;
            }
        }
        return sameNum;
        
    }
}
/**
 * 形参和实参的变化。
 * 如果基本类型和String  是存储在栈内存当中的,当被调函数被调用时形参申请空间,开始执行操作,在操作完毕的时候释放 形参申请的空间。这样的话  实参根本没有改变。
 * 如果操作对象是对象的话,形参接受栈内存 内的地址,然后去堆内存中进行操作,此时操作的是 堆内存中的数据,虽然地址没变 ,但是地址指向的空间内的 数据已经改变。 
 * 
 * 
 * */

 

 

 

byte short  int 在计算的时候  会自动转换为  int 类型。

转载于:https://www.cnblogs.com/A-FM/p/5617111.html

相关文章:

  • 写出好的 commit message
  • 微软开发团队的DevOps实践启示
  • centos6.5环境下svn服务器和客户端配置实用详解
  • python 字典(dict)按键和值排序
  • url获取数据
  • 如何绘制caffe网络训练曲线
  • 日志分析系统——Hangout源码学习
  • spring boot 调试 - 热部署
  • 阿里云服务器Linux CentOS安装配置(零)目录
  • 数据结构 树 相关面试试题
  • zabbix Maintenance维护周期
  • [CentOs7]图形界面
  • Kafka问题排查(消费者自动关闭)
  • 手把手之STM32GPIO
  • iOS 读取plist 方法
  • 【Leetcode】101. 对称二叉树
  • [数据结构]链表的实现在PHP中
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • JDK 6和JDK 7中的substring()方法
  • jQuery(一)
  • Mysql优化
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • php的插入排序,通过双层for循环
  • Python实现BT种子转化为磁力链接【实战】
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • SpriteKit 技巧之添加背景图片
  • swift基础之_对象 实例方法 对象方法。
  • Webpack 4x 之路 ( 四 )
  • 聚簇索引和非聚簇索引
  • 前端_面试
  • 算法系列——算法入门之递归分而治之思想的实现
  • 学习使用ExpressJS 4.0中的新Router
  • Mac 上flink的安装与启动
  • ​iOS实时查看App运行日志
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • $forceUpdate()函数
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (pytorch进阶之路)扩散概率模型
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .NET CF命令行调试器MDbg入门(一)
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 药厂业务系统 CPU爆高分析
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • [2023年]-hadoop面试真题(一)
  • [30期] 我的学习方法
  • [CareerCup] 14.5 Object Reflection 对象反射
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件