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

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. Light oj-1004 - Monkey Banana Problem,数字三角形的变形版~

                                                                                                     100 ...

  2. springboot 集成日志 yml配置

    原文:https://www.cnblogs.com/bigben0123/p/7895696.html

  3. Uvalive - 3026 Period (kmp求字符串的最小循环节+最大重复次数)

    参考:http://www.cnblogs.com/jackge/archive/2013/01/05/2846006.html 总结一下,如果对于next数组中的 i, 符合 i % ( i - n ...

  4. Codeforces 631D Messenger【KMP】

    题意: 给定由字符串块(字符及连续出现的个数)组成的字符串t,s,求t串中有多少个s. 分析: KMP 这题唯一需要思考的地方就是如何处理字符串块.第一想到是把他们都展开然后进行KMP,可是展开后实在 ...

  5. 【electron系列之一】创建右下角通知栏小图标

    electron 用Tray对象来实现右下角通知栏小图标 一.先引入app, BrowserWindow来实现浏览器功能,接着引入Tray, Menu来实现右下角 二. new Tray('./pag ...

  6. oracle的processes和session最大限制

    1.现象:oracle运行了一段时间后出现用户名连接不上,提示process已经达到最大值. 2.解决: --管理员身份登录 sqlplus / as sysdba --修改processes最大值, ...

  7. TensorFlow-GPU环境配置之三——安装bazel

    TensorFlow的源码需要使用bazel进行编译,所以需要安装bazel构建工具 1.安装JDK 8 sudo add-apt-repository ppa:webupd8team/java su ...

  8. P-Called-Party-ID头域

    典型的proxy server在路由 INVITE 请求到目标时插入 P-Called-Party-ID 头域.该头域用 porxy 收到请求的 Request-URI 填写. UAS 从几个已注冊的 ...

  9. 使用Node搭建reactSSR服务端渲染架构

    如题:本文所讲架构主要用到技术栈有:Node, Express, React, Mobx, webpack4, ES6, ES7, axios, ejs,  log4js, scss,echarts, ...

  10. cesm下载备注

    新版使用svn下载. 软件要求: The following are the external system and software requirements for installing and ...