简陋自写intList--双色球实例
来源:互联网 发布:广西驰程网络办公系统 编辑:程序博客网 时间:2024/06/07 15:27
数组在存储数据时,不得不说是很舒服的,无论是查找,还是排序,因为下标 的问题,可以迅速的定位到相关的数据。
但是,非常不满意的是,数组的长度在我们开辟之后,就不能更改,也就是说,我们如果往一个数组中扔数据,会发生覆盖现象。同理,如果删去数组中的元素,数组中会出现0,而不是我们认为的会消失,然而,我们还没有学习集合,所以,在老师的带领下,我们就完成了一个简陋的集合。并且实现了双色球的选择。
第一,往数组中添加数据。因为知识实在受限,没办法的,所以,初始数组是有我们给限定的大小,然后写一个扩容,当我们添加的数据的位置等于数组大小时,就会运行扩容方法,然后接着进行数据的填写。
在扩容类中,主要是使用了API,arrays.copyOf();复制原数组到现有数组,只是在大小上进行增加。
当输入一个数时,因为我们的初始数组中的数据为空,我们实现的就是在数组的最后直接追加的数据;在这基础之上实现的是无论是什么位置,我们都能插入数据;
插入数据的时候,是从后往前添加,因为有一个新的数据添加进来,所以我们添加的数据就传到了相应的位置,而原来的数据都需要向后推一位,所以,原来下标为2的成了3,3成了4,当添加的位置等于数组的长度,就又该调用扩容方法:
代码如下:
public int add(int value) { return add(value, size); } // 向数组中指定位置添加元素 public int add(int value, int position) { if (position > size)//size为我们初始化的数据长度 return -1; if (size == arr.length) {//长度等于数组长度时,调用扩容函数 dilatation(); } for (int i = size; i > position; i--) {//从后往前进行数据的后退 arr[i] = arr[i - 1]; } arr[position] = value; size++; return value; }
第二,我们要说的是,移除数组元素的方法,其实和增加差不多,但是,我们不会涉及到去减小数组的长度,只是移除了那个位置的元素,然后将后面的数据往前推,然后将size减小:
public int remove(int position) { if (position > size)//返回-1;就是直接退出程序,因为位置大于size代表输入无效 return -1; int removeValue = arr[position];//方便返回移除的值 size--;//每次移走一个数,都要将size减一,从而实现数组的长度的变化 for (int i = position; i < size; i++) { arr[i] = arr[i + 1]; } arr[size] = 0;//将最后一位置零 return removeValue; }
然后就来说说双色球实例,蓝球不必多说,六选一,一个随机算法即可,主要说红球
1.运用我们自己动手封装的API,里面的add方法,通过for循环,为每一个数组元素赋值;
2.实现数组的动态变化:首先在1-33之间求出随机数,。然后运用remove方法, 移除该随机数位置上的数,利用remove动态更新数组的特性,保证不会出现相同的数据
然后在主函数中,利用for循环,循环6次,调用封装有remove的方法,输出每次移除的数,从而实现数据的随机
public class CoreJava03 { public static void main(String[] args) { IntList redintList=new IntList(); int []arr=new int[6]; while(true){ initRedBall(redintList); for(int i=0;i<6;i++){ arr[i]=choiceRandomBall(redintList); } System.out.println(Arrays.toString(arr)); try{ Thread.sleep(2000); }catch(InterruptedException ex){ ex.printStackTrace(); } } } public static void initRedBall(IntList redintList){ for(int i=1;i<=33;i++){ redintList.add(i); } } public static int choiceRandomBall(IntList redintList ){ int temp=(int) (Math.random()*redintList.size()); return redintList.remove(temp); }}
不得不说,没有集合写数组的动态变化在,真特么的累,为了理解这,也是够费心。
但是吧,有了这个自己动手封装的api之后再做这个随机,真的是轻松了不少。
- 简陋自写intList--双色球实例
- ios 自写网络请求实例方法
- 自己写的一个简陋的C++队列模板
- 自己写的一个简陋的C++栈模板
- C++写的简陋喊话器(使用到wxWidgets)
- 初学Java 写的一个简陋的Swing Demo
- 贴一个刚写的 词法解析程序吧(C语言),很简陋,呵呵。。。
- 自己写的一个企业管理程序,很简陋,随便看看吧
- 用JAVA写的一个只基于awt的计算器---比较简陋,继续加油!
- 简陋聊天
- 自写的汇编程序
- 自写加密方法
- 自写分页
- 自写计算器
- word2007 自写
- 自写strstr函数
- 自写strcpy函数
- 自写疯狂猜拳
- 新闻客户端功能类集合
- Uva540 队列与map
- 2015-2016ACM-ICPC NEER northern-subregional-contest E Easy Arithmetic 思维、模拟
- 内部类的详解
- Anroid优化(二)_内存优化
- 简陋自写intList--双色球实例
- linux学习之硬盘的存储原理和内部架构
- Aizu 2224 (并查集 Save you cat )
- java-ee
- 关于硬件加速哪些优秀的资源总结
- 201_用正则来判断密码强度过低
- 第八章 RMAN备份
- 【题解】Leetcode.318. Maximum Product of Word Lengths
- vim的一些用法