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

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. img下出现几像素空白的问题

    先看一个例子和效果,应该就会明白我的问题了. <meta http-equiv="Content-Type" content="text/html; charset ...

  2. 【LINUX】Linux学习小结

    ****xargs命令**** 当需要将参数列表转换成小块分段传递给其他命令时,可以使用xargs命令.栗子如下: 若想在启动lampp之后用kill方式杀掉全部的进程就可以用下面的命令: ps -e ...

  3. 自定义jQuery插件Step by Step

    1.1.1 摘要 随着前端和后端技术的分离,各大互联网公司对于 Mobile First理念都是趋之若鹜的,为了解决网页在不同移动设备上的显示效果,其中一个解决方案就是Responsive Desig ...

  4. Prim算法与Dijkstra算法的联系与区别

    /* 图结构,邻接矩阵形式 */ ElemType nodes[n]; int edges[n][n]; prim_or_dijkstra( int index, bool usePrim ) /* ...

  5. 转 velocity 模板使用总结

    Velocity是一个基于java的模板引擎.它允许任何人仅仅简单的使用模板语言来引用由java代码定义的对象. 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一 ...

  6. Future 模式介绍

    假设一个任务执行需要花费一些时间,为了省去不必要的等待时间,可以先获取一个提货单,即future,然后继续处理别的任务,知道货物到达,即任务完成得到结果,此时可以使用提货单提货,即通过future得到 ...

  7. 腾讯大规模Hadoop集群实践 [转程序员杂志]

    TDW(Tencent distributed Data Warehouse,腾讯分布式数据仓库)基于开源软件Hadoop和Hive进行构建,打破了传统数据仓库不能线性扩展.可控性差的局限,并且根据腾 ...

  8. qml 相关的博客

    http://qt-project.org/wiki/SpaceAppsChallengeResources http://www.ics.com/blog https://www.ics.com/d ...

  9. POJ 2159 Ancient Cipher 难度:0

    题目链接:http://poj.org/problem?id=2159 #include <cstring> #include <cstdio> #include <cc ...

  10. 向MySql中插入中文时出现乱码

    这个因为字符集编码问题.在连接字符串中加上CharSet=gbk