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

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 类型。

JAVA的双色球 小程序的更多相关文章

  1. Java 后端微信小程序支付demo (网上说的坑里面基本上都有)

    Java 后端微信小程序支付 一.遇到的问题 1. 商户号该产品权限未开通,请前往商户平台>产品中心检查后重试 2.签名错误 3.已经调起微信统一下单接口,可以拿到预支付ID,但是前端支付的时候 ...

  2. 用python 实现生成双色球小程序

    生成双色球小程序: #输入n,随机产生n条双色球号码,插入n条数据库 #表结构: seq CREATE TABLE `seq` ( `id` int(11) NOT NULL AUTO_INCREME ...

  3. 打造一款 刷Java 知识的小程序(二)

    学习Java的神器已上线,面向广大Java爱好者! 之前写的一篇:打造一款 刷Java 知识的小程序(一) 一.第二版做了什么? 第一版小程序只具有初级展示功能,知识点都是hardcode在代码里面的 ...

  4. 【Java】一个小程序,计算它包含的代码所需的耗时

    写一个小程序,用来计算它包含的代码所需的耗时.虽然简单,测试代码是否耗时还是有点用的,不用重新写嘛~ import java.util.Date; import java.util.concurren ...

  5. java 学习 ——计算器小程序

    简易计算器小程序代码: package jisuanqi; //声明须要插入的包 import java.awt.*; import java.lang.Object; import java.lan ...

  6. 「小程序JAVA实战」小程序的留言和评价功能(70)

    转自:https://idig8.com/2018/10/28/xiaochengxujavashizhanxiaochengxudeliuyanhepingjiagongneng69/ 目前小程序这 ...

  7. 「小程序JAVA实战」小程序的举报功能开发(68)

    转自:https://idig8.com/2018/09/25/xiaochengxujavashizhanxiaochengxudeweixinapicaidancaozuo66-2/ 通过点击举报 ...

  8. 「小程序JAVA实战」小程序的个人信息作品,收藏,关注(66)

    转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudegerenxinxizuopinshoucangguanzhu65 ...

  9. 「小程序JAVA实战」小程序的关注功能(65)

    转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudeguanzhugongneng64/ 在个人页面,根据发布者个人和 ...

随机推荐

  1. [NOIP2007] 提高组 洛谷P1005 矩阵取数游戏

    题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...

  2. tyvj1031 热浪

    背景 USACO OCT09 9TH 描述 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品.Farmer John此时以先 ...

  3. 【c++】【转】c++中的explicit关键字

    http://www.cnblogs.com/chio/archive/2007/09/17/895263.html c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式(调用) ...

  4. Cocos2d-x v3.1.1 创建以及编译项目

    1.安装python, 并将安装路径增加系统环境变量中; 2. 执行cocos2d-x根文件夹下的setup.py; 3. 进入cmd, 输入: cocos new 项目名称 -p 包名 -l 语言类 ...

  5. Django学习系列之重写User模型和登录验证

    重写User模型 Django内置的User模型可能不适合某些项目,我们可能要基于内置的添加一些字段 创建users app startapp users 修改settings.py配置文件,覆盖默认 ...

  6. jQuery的DOM操作之捕获和设置

    .html()--获取或设置目标元素内的全部内容,包括html的标签及属性在内: .text()--仅获取或设置目标元素内的文本内容. .val()--获取输入框的值: .attr()--获取或设置目 ...

  7. JMS消息中间件原理及ActiveMQ用法

    导读: JMS:Java消息服务(Java Message Service)应用程序接口.是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息.进行 ...

  8. Redis官网下载步骤(含windows版)

    ①.百度redis ,进入官网 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  9. mingw32-gcc.exe: error: CreateProcess: No such file or directory

    用code::blocks在windows平台下,搭建object c编译环境时,出现这个错误. 解决的方法: 将setting -> compliler -> Toolchain exe ...

  10. Linux下,PHP的SESSION不起作用的问题

    改动SESSION目录的权限就能够了. 先找到SESSION目录, 然后 chmod -R 777 /var/lib/php/session 假设没有此目录,则新建此目录 mkdir -R 777 / ...