提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、代码实现
    • 1.添加依赖及引入库
    • 2.功能实现
  • 二、功能分析
    • (1)Lists.newArrayList()方法
    • RandomUtil.randomEle()方法

前言

敲代码敲累了?来打一注双色球乐呵乐呵?


一、代码实现

1.添加依赖及引入库

代码如下(示例):

 <dependencies><!-- hutool工具类--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.6</version></dependency><!-- google java类库--><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>18.0</version></dependency></dependencies>
import cn.hutool.core.util.RandomUtil;
import com.google.common.collect.Lists;
import java.util.List;
import java.util.Scanner;

2.功能实现

代码如下(示例):

public class DoubleColorBall {/*** 主方法*/public static void main(String[] args) {System.out.println("请输入彩票注数:");Scanner scanner = new Scanner(System.in);int number = scanner.nextInt();getDoubleColorBallNumber(number);}/*** 获取多注双色球号码*/public static void getDoubleColorBallNumber(int num) {System.out.println("随机生成" + num + "注双色球号码为:");String resultNumber = "";for (int i = 0; i < num; i++) {System.out.println("【" + (i + 1) + "】 " + resultNumber + getDoubleColorBallNumber());}}/*** 获取单注双色球号码*/public static String getDoubleColorBallNumber() {String resultNumber = "";for (int i = 0; i < 6; i++) {String ballNumber = RandomUtil.randomEle(getRedBalls()) + "\t";resultNumber = resultNumber + ballNumber;}return resultNumber + RandomUtil.randomEle(getBlueBalls());}/*** 获取红球球号集合*/public static List<String> getRedBalls() {return getBalls(33);}/*** 获取蓝球球号集合*/public static List<String> getBlueBalls() {return getBalls(16);}/*** 获取球号集合*/public static List<String> getBalls(int num) {List<String> redBalls = Lists.newArrayList();for (int i = 1; i <= num; i++) {int length = String.valueOf(num).length();String str = String.format("%0" + length + "d", i);System.out.println(str);redBalls.add(str);}return redBalls;}
}

二、功能分析

(1)Lists.newArrayList()方法

在代码中,选择调用google工具类下的Lists.newArrayList()方法来创建保存不同球色的球号集合,该方法源码如下:

 public static <E> ArrayList<E> newArrayList() {return new ArrayList();}

其形式类似于正常的list创建,它能自动推导尖括号里的数据类型。但在 Java 7 之后,都允许类型推断,在运行时没有区别。Java8 的new ArrayList<>()的<>里面可以不写类型,会自行推导数据类型。
不过该方法还拥有丰富的重载,以及相应的扩展方法:

Lists.newArrayList(E... elements)
Lists.newArrayList(Iterable<?  extends  E> elements)
Lists.newArrayList(Iterator<?  extends  E> elements)
List<T> exactly = Lists.newArrayListWithCapacity( 100 );
List<T> approx = Lists.newArrayListWithExpectedSize( 100 );
  • 如果你确定你的容器装多少个,不会改变,一般直接使用newArrayListWithCapacity(),如果容器超过定义size,它会自动扩容,不用担心容量不够。扩容后,会将原来的数组复制到新的数组中,但扩容会带来一定的性能影响:包括开辟新空间,copy数据,耗时,耗性能

  • 如果你的不确定你的容器多少个,但增幅不会太大,使用newArrayListWithExpectedSize(),会直接创建一个指定size的容器,但它会通过一条公式计算来进行扩容 (
    5L + (long)arraySize + (long)(arraySize / 10)
    ),例如,创建一个10个size的容器,那么 5+10 + (10/10) = 16,当容器添加第17个数据时,这个容器才会进行扩容,优点:节约内存,节约时间,节约性能

RandomUtil.randomEle()方法

调用线路:
randomEle(List<T> list) -> randomEle(List<T> list, int limit) -> list.get(randomInt(int limit)) -> getRandom().nextInt(int limit) -> ThreadLocalRandom getRandom()

public static <T> T randomEle(List<T> list) {return randomEle(list, list.size());}
public static <T> T randomEle(List<T> list, int limit) {return list.get(randomInt(limit));}
public static int randomInt(int limit) {return getRandom().nextInt(limit);}
public static ThreadLocalRandom getRandom() {return ThreadLocalRandom.current();}/*** Returns a pseudorandom {@code int} value between zero (inclusive)* and the specified bound (exclusive).** @param bound the upper bound (exclusive).  Must be positive.* @return a pseudorandom {@code int} value between zero*         (inclusive) and the bound (exclusive)* @throws IllegalArgumentException if {@code bound} is not positive*/public int nextInt(int bound) {if (bound <= 0)throw new IllegalArgumentException(BAD_BOUND);int r = mix32(nextSeed());int m = bound - 1;if ((bound & m) == 0) // power of twor &= m;else { // reject over-represented candidatesfor (int u = r >>> 1;u + m - (r = u % bound) < 0;u = mix32(nextSeed()) >>> 1);}return r;}

Java ThreadLocalRandom 类的 current() 方法返回当前线程的 ThreadLocalRandom,避免了原先的
Java.util.Random 类在多线程情况下,其它线程不断 CAS 自旋,并重写了其nextInt()方法计算种子

Java 彩票双色球实现相关推荐

  1. java彩票案例_java彩票例子

    1.[代码]java彩票例子 import java.util.HashSet; //自动过滤重复的集合 import java.util.Random; public class LuckyTic ...

  2. 基于JAVA彩票在线购买系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA彩票在线购买系统计算机毕业设计源码+系统+lw文档+部署 技术栈 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui.HTML.CSS. ...

  3. Java代码---双色球机选中奖概率

    package com.csl.demo;import java.util.*;/*** 双色球机选中奖概率* 2022-3-17* Cherry*/ public class DoubleBallD ...

  4. java实现双色球系统

    题目描述: 思路分析: 1.首先要定义一个方法生成7位随机数字的中奖号码 2.然后定义一个方法来获取用户输入的7位号码 3.再定义一个方法来判断中奖情况 4.定义一个方法将中奖号码和用户投注号码打印出 ...

  5. Java作业-双色球彩票

    目标效果: 要求: 奖金那里不是很懂题目描述的意思,所以一等奖默认最大值500万. 代码: /*** 模拟双色球彩票开奖结果:随机生成一注双色球彩票,判断其是否中奖,奖金为多少.一注双色球彩票由6个不 ...

  6. java实现双色球彩票中奖游戏

    目录 前言 一.游戏规则 二.代码实现 编程思想 代码展示 三.结果展示 前言 根据游戏规则,设计一个双色球号码竞猜游戏,根据规则,获得不同的奖项和奖金. 一.游戏规则 二.代码实现 编程思想 设置两 ...

  7. java模拟双色球彩票程序

    /** * 案例 模拟双色球 * 系统生成一个蓝球和六个红球 并存储起来 * 接受用户选号 1个蓝球 和 6个红球 * 验证比较用户是否中奖 * 公布本期中奖号码 */ import java.uti ...

  8. Java 实现双色球的彩票功能。规则:从33个红球中随机选择不重复的6个数,从16个蓝球中随机选择1个组成一注彩票。可以选择买多注。

    package cn.zhang;import java.util.Scanner;public class Subject001 {/** 实现双色球的彩票功能.规则:从33个红球中随机选择不重复的 ...

  9. Java模拟双色球彩票

    1 package practice1; 2 3 import java.util.Random; 4 import java.util.Scanner; 5 6 public class Test3 ...

最新文章

  1. L1-008.求整数段和
  2. 如何快速学会别人的代码和思维
  3. vue打包后axios返回html,vue项目封装axios并访问接口
  4. 物理内存和虚拟内存的区别 及 什么是虚拟地址空间
  5. rda冗余分析步骤_群落分析的典范对应分析(CCA)概述
  6. 编译原理(五)自底向上分析之算符优先分析法
  7. 6 个步骤,教你在Ubuntu虚拟机环境下,用Docker自带的DNS配置Hadoop | 附代码
  8. ThinkPHP6项目基操(16.实战部分 redis+token登录)
  9. (29)System Verilog设计SPI接收
  10. Xshell和Xftp免费版
  11. 编好的C语言程序怎么放记事本上运行,怎么用记事本运行程序
  12. asp.net oracle连接数据库,通过ASP.NET连接Oracle数据库实例教程
  13. 如何提高睡眠质量快速入睡,改善睡眠的小妙招你要知道
  14. 【大话云原生】微服务篇-五星级酒店的服务方式
  15. 鸿蒙版瑞幸咖啡开发日记(六)详情页与首页联动
  16. 乐MAX2 乐视X820_官方线刷包_救砖包_解账户锁
  17. 图片文件太大?缩小图片文件的2个小技巧
  18. Excel—使用if(countif())表达式来筛选两个表格中相同的数据
  19. 暗黑破坏神资源 - 紫冰整理
  20. 剑指Offer第十天——T46——动态规划

热门文章

  1. androidAPP 集成微信支付
  2. Java生成条形码code128
  3. 浪漫婚礼摄影策划公司网站搭建模板
  4. 优化itmo官网总结
  5. 班级奖学金管理系统java_jsp学生奖学金评奖评优管理系统
  6. 新人找交易员工作要注意! ! ! 【入行篇
  7. CAD 图案填充问题
  8. rk3588编译Ubuntu固件,Linux SDK开发
  9. 共阴/阳极数码管代码
  10. vue2-vant组件库的使用