`
zhanglu0223
  • 浏览: 22819 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Java数字抽奖游戏核心代码及分析

 
阅读更多

最近,正在看《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提供了`java.util.Random`类,它是生成随机数的基础。在彩票抽奖机中,我们需要生成一系列随机数,这些数将作为彩票的号码。`Random`类可以生成指定范围内的...

    java摇奖机代码

    本项目旨在通过Java语言构建一个简单的摇奖机程序,利用多线程技术来实现三个数字的同时随机生成及显示功能。用户可以通过点击按钮来控制摇奖过程的开始与停止。 #### 二、核心组件介绍 该项目主要包括两个核心类...

    java 抽奖小程序 源码

    Java 抽奖小程序是一款基于Swing和JFrame技术开发的应用程序,主要用于实现各种抽奖场景的功能。Swing是Java提供的一款图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,提供了丰富的组件库...

    免费抽奖中奖程序软件数字抽奖幸运抽奖

    总结来说,"免费抽奖中奖程序软件数字抽奖幸运抽奖"是一个结合了随机数生成、数据库管理、用户交互和公平性保障的IT解决方案,旨在为各种活动增添趣味性和互动性。通过合理的设计和实施,这类软件能有效地满足从小型...

    装盘抽奖代码

    这段代码描述了一个简单的转盘抽奖系统,其中的抽奖结果被设定为总是停在数字5的位置。接下来,我们将详细解析这段代码中的关键知识点。 ### HTML结构与布局 页面的基本结构通过HTML标签构建。`&lt;%@page language="...

    Java语言写幸运抽奖程序

    在Java编程语言中,开发一个简单的幸运抽奖程序可以是一个有趣且实用的学习实践。根据提供的标题、描述和部分内容,我们可以分析并详细解释以下知识点: 1. **随机数生成**: Java提供了`Math.random()`方法来生成...

    随机抽奖源代码

    随机抽奖的核心是生成伪随机数,这通常通过使用随机数生成器(RNG)来实现。在编程语言中,如Python、Java或C#,都有内置的库函数可以生成随机数。例如,Python中的`random`模块提供了`randint`, `randrange`, `...

    安卓抽奖程序开发 源代码

    3. **动画效果**:抽奖的核心在于模拟旋转和停靠的过程,这通常通过动画实现。Android支持属性动画(Property Animation)系统,如ObjectAnimator或ValueAnimator,可以实现平滑的转动效果。开发者需要掌握如何创建...

    幸运抽奖项目.zip

    学习者可以通过阅读和分析这些代码,了解如何组织和执行抽奖逻辑。此外,可能还包含了练习和作业的答案,这些可以帮助学生检查自己的理解,并学习到如何解决类似问题的策略。 上机练习和课后作业的设计旨在巩固和...

    用java基础知识、循环、双重循环、随机数实现幸运抽奖功能。

    在本项目中,我们将利用Java的基础知识,包括循环、双重循环和随机数生成,来创建一个幸运抽奖系统。这个系统分为五个主要阶段,逐步构建出一个完整的交互式应用。 阶段1:实现菜单的输出显示 在这一阶段,我们需要...

    用随机函数编写的幸运抽奖程序

    抽奖程序的核心功能是生成一个或多个“幸运数字”,这通常通过以下步骤实现: 1. **初始化随机数生成器**:在程序开始时,我们先要设定随机数种子。这可以是当前时间,以确保每次运行时都能得到不同的序列,增加...

    Java上机课程彩票代码源码.zip

    通过分析这个彩票代码源码,学习者不仅能掌握Java编程的基本技能,还能理解如何将这些技能应用于实际问题中,提升解决问题的能力。这样的上机课程对于培养实际开发经验是非常有价值的。在实际的项目中,还需要考虑更...

    Java-source-code.zip_抽奖

    【Java源代码与抽奖系统】 Java是一种广泛使用的编程语言,以其跨平台、面向对象和安全性等特点而备受青睐。在这个名为"Java-source-code.zip_抽奖"的压缩包中,包含了一系列用Java编写的实用应用程序,这些程序...

    java源码:利用随机函数抽取幸运数字.zip

    在Java编程语言中,随机数的生成是常见的需求,例如在游戏、模拟、数据分析或本例中的“抽取幸运数字”等场景。这个压缩包“java源码:利用随机函数抽取幸运数字.zip”显然包含了实现这一功能的源代码。让我们深入...

    HTML5后台控制抽奖程序 转盘+刮刮乐

    这个程序集成了转盘和刮刮乐两种常见的抽奖形式,为用户提供丰富多样的参与体验。 首先,我们来深入理解HTML5这一核心技术。HTML5是超文本标记语言(HTML)的第五次重大修订,其主要改进包括更好的离线存储、媒体...

    jsp界面弄的简单的抽奖项目

    **随机数生成**:抽奖的核心部分是生成随机数,这在Java中可以通过`java.util.Random`类实现。开发者可能会定义一个范围,随机选取一个数字代表某个奖项,或者无奖。\n\n5. **数据库连接与交互**:如果项目需要记录...

    2014年会图片抽奖程序DEMO

    2. **随机数生成**:抽奖的核心在于随机性,这需要程序能够生成不可预测的数字。在编程中,这通常通过内置的随机数生成函数实现,如Python的`random`模块,Java的`Random`类等。 3. **图像处理**:程序需要加载和...

    java编写的简单彩票中奖程序

    这个程序的核心功能是模拟彩票购买过程,通过用户输入的数字与系统自动生成的随机数进行对比,以确定是否中奖。下面我们将深入探讨相关的Java编程知识点。 首先,Java是一种广泛使用的面向对象的编程语言,具有跨...

    抽奖软件

    在编程中,我们会使用内置的随机数生成函数,如Java的`Random`类或Python的`random`模块,来创建一系列不可预测的数字序列。这些随机数将作为每个参与者的标识,被用来决定谁是“幸运儿”。 其次,抽奖软件通常包含...

    大河抽奖盲盒运营版1.0.9 开源版

    【大河抽奖盲盒运营版1.0.9 开源版】是一款专为抽奖活动设计的小程序应用,其核心功能是提供一个互动性强、用户体验良好的在线抽奖平台。该版本为开源版,意味着用户可以获得源代码并可以根据自己的需求进行定制化...

Global site tag (gtag.js) - Google Analytics