最近,正在看《corejava8th》这本书。自己按照书上作者一段代码的思想,自己动手写了一个小代码,深刻的感觉到作者Horstmann超高的代码思想。《corejava8th》真的确实是一本好书,值得慢慢品读,会给人带来无穷的惊喜。自己写的代码与注释如下,废话不多说,上代码。
package com.luiszhang.test;
import java.util.Arrays;
/**
* NumberLotteryGame
* 一个简单的数字彩票游戏类
* @author LuisZhang
* 参考了core java 8th中的例3-7的设计思想
*/
public class NumberLotteryGame {
private int gamesNumber; // 生成游戏的数量,为以后多线程扩展做考虑
private int numbersLength; // 数字序列的总长度
private int winningNumbersLength; // 中奖的数字序列的长度
/**
* Constructor with three parameters
* 初始化3个参数的构造方法
* @param gamesNumber
* @param numbersLength
* @param winningNumbersLength
*/
public NumberLotteryGame(int gamesNumber, int numbersLength, int winningNumbersLength) {
this.gamesNumber = gamesNumber;
this.numbersLength = numbersLength;
this.winningNumbersLength = winningNumbersLength;
}
/**
* Generate a number Array
* 生成一个产生中奖序列所需的数字序列
* @param length 数字序列的长度
* @return numbers 产生的数字序列
*/
public static int[] generateNumberArray(int length) {
int[] numbers = new int[length];
for (int i = 0; i < numbers.length; i++) {
numbers[i] = i + 1;
}
return numbers;
}
/**
* Generate a winning number array
* 根据生成的数字序列,产生不重复的中奖数字序列
* @param length 中奖数字序列的长度
* @return result 中奖数字数组
*/
public int[] generateWinningNumberArray(int length) {
int[] numbers = NumberLotteryGame.generateNumberArray(numbersLength);
int[] result = new int[length];
int n = numbersLength;
// 该for循环为产生不重复的中奖序列的核心代码
for(int i = 0; i < result.length; i++) {
int r = (int) (Math.random() * n); // 随机产生一个从0——(n-1)的数字,Math.random()
// 随机产生一个[0, 1)范围的double型数值,
result[i] = numbers[r]; // 将该随机数字作为数组的下标,
// 将该下标对应的值赋给result[i]
numbers[r] = numbers[n - 1]; // 将numbers数组的numbers[n-1]的值,赋给刚已赋
// 值过的numbers[r]。
n--; // 将n-1,从而下一次循环产生的随机的原数组下标的范围从0——(n-1)-1,
// 保证了上一步中,已经赋值给数组中其他数的numbers[n-1],不会在下次循环中给取
// 得,从而保证了产生的中奖数组result为不重复的。
}
return result;
}
/**
* Show winning NumberArray
* 显示中将数组
*/
public void showWinningNumberArray() {
int[] winningNumbers = this.generateWinningNumberArray(winningNumbersLength);
Arrays.sort(winningNumbers);
for(int r : winningNumbers) {
System.out.print(r + " ");
}
System.out.println();
}
/**
* @return the gamesNumber
*/
public int getGamesNumber() {
return gamesNumber;
}
/**
* @param gamesNumber the gamesNumber to set
*/
public void setGamesNumber(int gamesNumber) {
this.gamesNumber = gamesNumber;
}
/**
* @return the numbersLength
*/
public int getNumbersLength() {
return numbersLength;
}
/**
* @param numbersLength the numbersLength to set
*/
public void setNumbersLength(int numbersLength) {
this.numbersLength = numbersLength;
}
/**
* @return the winningNumbersLength
*/
public int getWinningNumbersLength() {
return winningNumbersLength;
}
/**
* @param winningNumbersLength the winningNumbersLength to set
*/
public void setWinningNumbersLength(int winningNumbersLength) {
this.winningNumbersLength = winningNumbersLength;
}
/**
* Main method
* 用于测试该类的main方法
* @param args
*/
public static void main(String[] args) {
int i = 20; // int i = Integer.parseInt(args[0]);
for(int j = 0; j < i; j++) {
NumberLotteryGame game1 = new NumberLotteryGame(1, 15, 7);
game1.showWinningNumberArray();
}
}
}
分享到:
相关推荐
首先,我们来探讨Java在构建抽奖系统中的核心作用。Java提供了`java.util.Random`类,它是生成随机数的基础。在彩票抽奖机中,我们需要生成一系列随机数,这些数将作为彩票的号码。`Random`类可以生成指定范围内的...
本项目旨在通过Java语言构建一个简单的摇奖机程序,利用多线程技术来实现三个数字的同时随机生成及显示功能。用户可以通过点击按钮来控制摇奖过程的开始与停止。 #### 二、核心组件介绍 该项目主要包括两个核心类...
Java 抽奖小程序是一款基于Swing和JFrame技术开发的应用程序,主要用于实现各种抽奖场景的功能。Swing是Java提供的一款图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,提供了丰富的组件库...
总结来说,"免费抽奖中奖程序软件数字抽奖幸运抽奖"是一个结合了随机数生成、数据库管理、用户交互和公平性保障的IT解决方案,旨在为各种活动增添趣味性和互动性。通过合理的设计和实施,这类软件能有效地满足从小型...
这段代码描述了一个简单的转盘抽奖系统,其中的抽奖结果被设定为总是停在数字5的位置。接下来,我们将详细解析这段代码中的关键知识点。 ### HTML结构与布局 页面的基本结构通过HTML标签构建。`<%@page language="...
在Java编程语言中,开发一个简单的幸运抽奖程序可以是一个有趣且实用的学习实践。根据提供的标题、描述和部分内容,我们可以分析并详细解释以下知识点: 1. **随机数生成**: Java提供了`Math.random()`方法来生成...
随机抽奖的核心是生成伪随机数,这通常通过使用随机数生成器(RNG)来实现。在编程语言中,如Python、Java或C#,都有内置的库函数可以生成随机数。例如,Python中的`random`模块提供了`randint`, `randrange`, `...
3. **动画效果**:抽奖的核心在于模拟旋转和停靠的过程,这通常通过动画实现。Android支持属性动画(Property Animation)系统,如ObjectAnimator或ValueAnimator,可以实现平滑的转动效果。开发者需要掌握如何创建...
学习者可以通过阅读和分析这些代码,了解如何组织和执行抽奖逻辑。此外,可能还包含了练习和作业的答案,这些可以帮助学生检查自己的理解,并学习到如何解决类似问题的策略。 上机练习和课后作业的设计旨在巩固和...
在本项目中,我们将利用Java的基础知识,包括循环、双重循环和随机数生成,来创建一个幸运抽奖系统。这个系统分为五个主要阶段,逐步构建出一个完整的交互式应用。 阶段1:实现菜单的输出显示 在这一阶段,我们需要...
抽奖程序的核心功能是生成一个或多个“幸运数字”,这通常通过以下步骤实现: 1. **初始化随机数生成器**:在程序开始时,我们先要设定随机数种子。这可以是当前时间,以确保每次运行时都能得到不同的序列,增加...
通过分析这个彩票代码源码,学习者不仅能掌握Java编程的基本技能,还能理解如何将这些技能应用于实际问题中,提升解决问题的能力。这样的上机课程对于培养实际开发经验是非常有价值的。在实际的项目中,还需要考虑更...
【Java源代码与抽奖系统】 Java是一种广泛使用的编程语言,以其跨平台、面向对象和安全性等特点而备受青睐。在这个名为"Java-source-code.zip_抽奖"的压缩包中,包含了一系列用Java编写的实用应用程序,这些程序...
在Java编程语言中,随机数的生成是常见的需求,例如在游戏、模拟、数据分析或本例中的“抽取幸运数字”等场景。这个压缩包“java源码:利用随机函数抽取幸运数字.zip”显然包含了实现这一功能的源代码。让我们深入...
这个程序集成了转盘和刮刮乐两种常见的抽奖形式,为用户提供丰富多样的参与体验。 首先,我们来深入理解HTML5这一核心技术。HTML5是超文本标记语言(HTML)的第五次重大修订,其主要改进包括更好的离线存储、媒体...
**随机数生成**:抽奖的核心部分是生成随机数,这在Java中可以通过`java.util.Random`类实现。开发者可能会定义一个范围,随机选取一个数字代表某个奖项,或者无奖。\n\n5. **数据库连接与交互**:如果项目需要记录...
2. **随机数生成**:抽奖的核心在于随机性,这需要程序能够生成不可预测的数字。在编程中,这通常通过内置的随机数生成函数实现,如Python的`random`模块,Java的`Random`类等。 3. **图像处理**:程序需要加载和...
这个程序的核心功能是模拟彩票购买过程,通过用户输入的数字与系统自动生成的随机数进行对比,以确定是否中奖。下面我们将深入探讨相关的Java编程知识点。 首先,Java是一种广泛使用的面向对象的编程语言,具有跨...
在编程中,我们会使用内置的随机数生成函数,如Java的`Random`类或Python的`random`模块,来创建一系列不可预测的数字序列。这些随机数将作为每个参与者的标识,被用来决定谁是“幸运儿”。 其次,抽奖软件通常包含...
【大河抽奖盲盒运营版1.0.9 开源版】是一款专为抽奖活动设计的小程序应用,其核心功能是提供一个互动性强、用户体验良好的在线抽奖平台。该版本为开源版,意味着用户可以获得源代码并可以根据自己的需求进行定制化...