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

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. HDU-5583-Kingdom of Black and White(2015ACM/ICPC亚洲区上海站-重现赛)

    Kingdom of Black and White                                                                           ...

  2. CodeForces - 812C Sagheer and Nubian Market 二分

    On his trip to Luxor and Aswan, Sagheer went to a Nubian market to buy some souvenirs for his friend ...

  3. Writing Code-Codeforces511C**

    http://codeforces.com/problemset/problem/544/C 完全背包 dp[i][j]表示第i行有j个bug #include<stdio.h> #inc ...

  4. rsyslogd系统日志服务总结

    简单介绍 syslog系统日志服务协议,标准出来的比较晚 用于记录系统日志或者用户程序产生的日志 采用C/S架构,本地可以通过socket和syslogd守护进程通讯,远程通过TCP/UDP协议通信, ...

  5. how to read openstack code : paste deploy

    本篇分为以下几个部分 paste 是什么 怎样使用paste paste of neutron paste 是什么 WSGI 是python 中application 和 web server互通的标 ...

  6. webpack-入口篇

    入口起点[Entry Points]: 单个入口(简写)语法 用法:entry: string|Array<string> 例子(webpack.config.js) const conf ...

  7. influxdb常用命令

    创建数据库 create database DBName 删除数据库 drop database DBName 使用指定数据库 use DBName 显示所有表 SHOW MEASUREMENTS 删 ...

  8. R语言pdf输出中文乱码处理

    1.使用基础包.使用函数pdf()输出 在使用pdf()函数时,要输出中文,仅仅有一种字体可选. 样例: pdf("chinese.pdf",family="GB1&qu ...

  9. 双层for 循环

    说说 图片 集合 list(set([ii for i in img_url_l for ii in i[0].replace('[','').replace(']','').replace(&quo ...

  10. 协议解析Bug分析

    协议解析Bug分析 源自邮件协议RPC(远程过程调用)处理的Request请求数据包的bug.        一.Bug描写叙述 腾讯收购的Foxmailclient能够作为outlookclient ...