首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java编程练习—双色球随机选号

最近学习了几天JAVA,做个编程小练习,感觉挺有趣,拿出来给朋友们讲解一下。

如果你是大神,请多指教。

如果你是小白,那正好,我们一起学习一下编程。

如果你喜欢,那太好了,我以后还会不断更新。

如果你看不懂,可以留言,我会尽可能的解答你的疑问。

涉及知识点:

数组:数组是内存中的一段连续空间,用来存放相同类型的数据变量。比如存一组整数,或者一组小数。

这里,我们将双色球的7个数字放到1个数组中。

数组的下标位数是从0开始的。比如能存放7个数的数组,就是a[0]到a[6]。

for循环

while循环

位运算

If语句

Random.nextInt():随机生成一个数字。注意,前面要有引包,即:importjava.util.Random;

好,这些基础知识就够了,开整。

现在我们要设计一个双色球随机选号程序。首先,我们要知道双色球怎么玩。

双色球的规则是:每注双色球有7个号码。

6个红号,一个蓝号。

6个红号是在1到33中选出的,这6个号不能重复。

然后在1到16中选出一个蓝号。这个蓝号可以和前边的红号重复。

程序该怎么设计呢?

第一步是,在1到33中,挑选6个数字。这6个数字要去重复。

第二步,在1到16中,挑选1个数字。

第三步,将前6个数字排序。

第四步,将排序后的数字打印出来,生成了一注双色球号码。

第一步拆解:计算机没法一次完成33选6的操作(主要是我不会)。只能是随机生成一个数(设为a),a和之前生成的所有数进行比较。如果a和其中一个相等,说明a重复了,那就要重新再生成一个a。直到这个a和之前所有的数字都不重复。然后,随机生成下一个数,下一个数再和之前的数字进行比较。直到完成所有需要的数字。

第二步很简单,因为蓝球是单独存在的,所有单独生成一个数即可。

第三步,排序,主要是对红球进行排序。我还没学习快排、二叉树排列,不过我这里也有好东西,仔细看。

排序就是假设第一个数是最小的,然后第一个数和后面的数字比较,如果比后面的数字大,就进行数字对调。继续比较,直到第一个数和最后一个数完成了比较。

然后开始第二个数的比较,第二个数和它之后的所有数字进行比较,如果比之后的数字大,就进行数字对调。

然后是第三个数的比较……直到完成最后一个数字的比较。

这样,所有数字都按从小到大的顺序排列好了。

这里数字对调应用了位运算中的异或运算符。

就是下面的样子:

inta=24;

intb=12;

a=a^b;

b=a^b;(我现在是24)

a=a^b;(我现在是12)

数字a原来是24,数字b是12,经过三部倒后,现在的结果是,数字b变成了24,数字a是12。

数字对调可以用其他更容易理解的方法进行。可以设置一个变量c,然后a给c,b给a,c再给b,完成了a、b数字的对调。简单说就是借助容器c倒一下。

我们使用位运算的好处就是,不需要额外的容器c就实现了对调。额外的容器是需要占用内存空间的。我们节省了空间。而且,右边使用三个完全相同的算式,酷极了。

注意:这个“ ^ ”不是excel里的幂运算符,是位运算的异或运算符。

^这个符号的简单说就是:0和0,1和1,返回一个0值。1和0,返回一个1值。

第四步就是把数组按照0到6的顺序逐一打印出来。

到此,我们就完成了双色球随机选号的程序设计。其他的随机选号也都差不多,大同小异。看到这里是不是超有成就感啊。当你下次踏入彩票站,准备实现人生梦想时,你一定会想到,彩票机里就存着这么一个程序啊。So easy。

下面是具体的执行程序。如果你是java初学者,你应该努力看懂它。程序里面应用了开关的概念,开关的作用是为了跳出当前层的循环。开关设为false或者是true都可以。一般设置为false,这样开关打开后就是true,使用if语句可以直接进行判断。不然你需要写if(flag==false)。

怎么样,看到这里你应该也完成了你的双色球选号程序了吧。

哈哈,本期双色球号码已经开出。是不是应该来一注啊。

后记

本来以为写一个程序解说很容易,真到上手,还是各种问题。给原来的程序写注释时,发现里面很多冗余的语句,竟是废话代码。在分析语句的过程中,分析着分析着,就把自己给绕懵了,以为程序有错误,赶紧又重新过了一遍逻辑。总之编程路上各种坑,老司机们都知道。

最后,如果你看到这里了,那就动手点个赞,把文章分享给你身边正在努力学习编程的朋友,或者自己收藏也不错,我不拦你。

2018年6月23日星期六,家中。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180623G1GL6500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券