Java数组

  应用1:

    大乐透彩票模拟器:
    规则: 前区01-35中随机生成5个号码
    后区01-12中随机生成2个号码
    模拟操作,系统自动生成号码组合,并且按从小到大的顺序输出结果
    同时要求可以选择生成多少组(默认选项:生成1组,生成5组,生成10组)

上图为方法一,数组的综合应用,赋值,冒泡排序,和通过循环遍历;

  方法一:

  常规的方法:

    第一步:输出彩票前区的号码,用while循环,一个个随机数字输出,把一个数字赋值进数组第一个位置,因为要保证每一个数字的唯一性,所以之后的输出的数字要做出判断,如果与前面的数字相等,那么需要重新抽取随机数,将每个输出的数字与前面的数字相比,通过循环完成,这样通过判断和循环就能保证输出的每个数字的唯一性,并且将数字赋值给数组;

    第二部:通过冒泡法排序,将数组中每两个数字进行比较,将大的数字通过交换放进数组下标大的对应位置,这样通过数组长度-1次的冒泡排序就能将数字进行有序的排列

通过if判断简化循环判断过程,如果两个数字都是经过判断且没有交换位置,那么下次排序判断则不需要做这一重复步骤;

方法2:活用数组的下标

    数组的下标是具有唯一且连续性的,满足彩票1-35个数字不相同的要求,将数字的下标看做彩票球号,下标所对应的数字在初始化不赋值的情况下为零,我们可以把抽取的随机数与数组下标做判断,如果输出的随机数字与下表相等那么对相对应的的下标所对应的位置输入数值做为信号标记,所以有信号标记(就是数组值不为0的下标)即是随机数抽取到的数字,那么数组前5个有标记的数组下标即是随机数抽取的前五个前唯一的数字,这样只要遍历输出这个数组那么就能完成前区号码的抽取。因为数组的下标是连续的所以只要循环遍历数组,即可按顺序排序号码

    总结

    加深对数组的理解后,可以灵活运用其下标对相应的抽取数字类型进行计算,数组的下标具有连续且唯一的性质,而数组的数值可以用来作为信号标记,未赋值的数组初始值都为0,对满足需要条件的下标进行信号标记,通过循环判断输出有信号标记的数组就可以筛选所需要的数字。

Java数组的运用的更多相关文章

  1. Java 数组

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如numbers[100 ...

  2. 第5章 Java数组

    1.什么是数组 数组可以想象成一个巨大的盒子,这个盒子里面存放的是同一个数据类型的数据 例如:int[] scores = {78,68,94,93}; 2.如何使用Java中的数组 2.1申明数组 ...

  3. Java 数组基础

    数组 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int ...

  4. Java数组及其内存分配

    几乎所有的程序设计语言都支持数组.Java也不例外.当我们需要多个类型相同的变量的时候,就考虑定义一个数组.在Java中,数组变量是引用类型的变量,同时因为Java是典型的静态语言,因此它的数组也是静 ...

  5. [转载]Java数组扩容算法及Java对它的应用

    原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组 ...

  6. Java数组技巧攻略

      Java数组技巧攻略 0.  声明一个数组(Declare an array) String[] aArray = new String[5]; String[] bArray = {" ...

  7. Java数组扩容算法及Java对它的应用

    1)Java数组对象的大小是固定不变的,数组对象是不可扩容的.利用数组复制方法可以变通的实现数组扩容.System.arraycopy()可以复制数组.Arrays.copyOf()可以简便的创建数组 ...

  8. Java数组与vector互转

    Java数组与vector互转 /* Object[] object1 = null ; //数组定义 Vector<Object> object2;//Vector定义 object2 ...

  9. 比较Java数组,ArrayList,LinkedList,Vector 性能比较

    public class PerformanceTester { public static final int TIMES=100000; public static abstract class ...

  10. Java数组的12个常用方法

    以下是12个关于Java数组最常用的方法,它们是stackoverflow得票最高的问题. 声明一个数组 String[] aArray = new String[5]; String[] bArra ...

随机推荐

  1. iterm2 快捷键设置

    单词跳转 设置option+ 左右键

  2. C#第四节课

    分值语句(1) using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syst ...

  3. MySQL中的注释符号的使用

    前言 在学习MySQL的过程中,因为目前接触的语法简单,所以实在没有想到过加入注释.在写博客使用Markdown时,突然想用注释语句,所以便百度了一下,引用了这一篇转载博客. MySQL中的注释符号有 ...

  4. Qt5.11+opencv3.4的配置安装

    系统:Windows 10 64位 前期准备: 1.CMake下载安装 下载地址:https://cmake.org/download/ 选择msi安装文件,按照提示一步一步按照就好 可以参考:htt ...

  5. Git 基础教程 之 暂存区

    工作区(working directory),就是目录,例如:pythonwork 版本库(Repository),工作区有一个隐藏的目录 .git 就是Git的版本库. 版本库最重要的是称为stag ...

  6. PAT 1090. Highest Price in Supply Chain

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  7. 洛谷 P1197 BZOJ 1015 [JSOI2008]星球大战 (ZOJ 3261 Connections in Galaxy War)

    这两道题长得差不多,都有分裂集合的操作,都是先将所有操作离线,然后从最后一步开始倒着模拟,这样一来,分裂就变成合并,也就是从打击以后最终的零散状态,一步步合并,回到最开始所有星球都被连为一个整体的状态 ...

  8. Using KafkaBolt to write to a kafka topic

    https://community.hortonworks.com/questions/27187/using-kafkabolt-to-write-to-a-kafka-topic.html --- ...

  9. linux下select,poll,epoll的使用与重点分析

    好久没用I/O复用了,感觉差点儿相同都快忘完了.记得当初刚学I/O复用的时候花了好多时间.可是因为那会不太爱写博客,导致花非常多时间搞明确的东西,依旧非常easy忘记.俗话说眼过千遍不如手过一遍,的确 ...

  10. dwr异常处理

    配置异常转换器: dwr.xml: <!-- 异常转换 --> <convert match="java.lang.Exception" converter=&q ...