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

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的第一个程序-Hello, World !

    学了一个月的Java,现在总结一下,就算复习了. 一.安装Java环境 这个没啥好说的. 1. 官网下载JDK安装 2. 配置环境变量.注意的是:环境变量配置好以后,如果cmd中运行 java 命令没 ...

  2. Java第一天,带你走进编程的世界,我的第一个程序

    要想彻底了解Java是什么,我就得首先了解编程语言的发展史.编程语言最初的形势是"0101......"数据编程,也就是机器语言.机器语言可以说是一种几乎没有人能够看懂的编程语言, ...

  3. java提前工作、第一个程序

    java提前工作 我们学习编程肯定会 运用到相应的软件 在这里 我个人推荐 eclipse.idea 这里的软件呢 都是用我们的java编程出来的,那它也需要用java来支持他的开发环境 这里就运用到 ...

  4. Java学习第一天

    Java学习第一天 对于网络管理员或者黑客必须知道的八个cmd命令 详情请参考:http://www.2cto.com/os/201608/533964.html          nbtstat  ...

  5. Java【第一课 java基本结构】

    一.java基本结构 上面是java的基本组成,包括外层的框架.java入口程序框架 二.java的第一个程序 首先创建一个文件,名字叫做helloworld.java,后缀名为java public ...

  6. JAVA的命名方式 ,JAVA的第一个打印时间的程序

    本文内容来自:Java的命名方式 ,Java的第一个打印时间的程序 – Break易站 1. Java的命名方式 Java采用了一种全新的方法来避免上述所有问题·为了给一个类库生成不会与其他名字混淆的 ...

  7. java第一个程序——Hello World

    Hello World 如果没有下载jdk以及配置环境变量的萌新请自行百度,教程非常的详细(参考:https://jingyan.baidu.com/article/6dad5075d1dc40a12 ...

  8. java学习 之 第一个程序及认识

    以前也看过一系列的java方面的程序,但是还没有正式敲过,今天正式学习并且正式敲出代码.在这里记录下来今日所得 写作工具:Notepad++ 在写作工具方面好多人建议用 记事本,但是我还是认为用 No ...

  9. “全栈2019”Java第九章:解释第一个程序

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. DSP基础学习-ADC同步采样

    DSP基础学习-ADC同步采样 彭会锋 2015-04-28 20:31:06 在DSP28027 LauchPad学习过程中,关于ADC同步采样和顺序采样的区别稍加研究了一下,发现里面还真有些门道, ...

  2. 在jsp页面解析json的2种方法

    方法1: $(function() { $("#btn").click(function() { $.ajax({ url : "fastjson.do", s ...

  3. Struts2 实现文件上传和下载

    实现上传功能 Struts2实际上是使用的commons fileupload 组件,所以记得导包哦. 1.首先你应该有一个上传页面 <!-- file的name属性与action中的File类 ...

  4. java二维数组简单初步理解

    二维数组 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”. int[][] arr = {{1, 2, 3}, {4, 5, 6}}; System.out.println(arr[0][ ...

  5. FG函数模块

    ALDB:                             ABAP/4上的逻辑数据库                                   选择屏幕的修改更新 BUBA_4: ...

  6. js首字母大写--单个单词的处理方式

    var operate2='OR'; for (var j = 0, len = operate1.length; j< len; j++) { //获得unicode码 var ch2 = o ...

  7. SQL语句技巧(上个样式太差了)

      以下并非本人整理,但是看后感觉相当不错,特此分享. 1.应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分 ...

  8. synchronized和static synchronized的比较

    群里讨论的一个问题,网上别人已经贴出了很详细的说明,这里补充记录下,后面加入个人测试代码. 起因:1月份的时候看群里讨论一道问题,问题内容如下: 一个日本作者-结成浩的<java多线程设计模式& ...

  9. 使用FIDDER 抓包构建请求

    FIDDER 是一个抓包利器,可以抓去浏览器的http请求. 工作原理是: FIDDER 作为代理. 1.在启动fidder时他自动启动服务监听8888端口.     2.启动FIDDER它会自动修改 ...

  10. php中文汉字截取函数

    public function substrgb($in,$num) { //$num=16; $pos=0; $bytenum=0; $out=""; while($num){ ...