A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡建伟 中级黑马   /  2014-3-16 22:51  /  821 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 胡建伟 于 2014-3-16 22:55 编辑

数组概念:同一种类型的数据的集合。其实数组就是一个容器。
数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:元素类型[] 数组名=new 元素类型[元素个数或数组长度];
         例:int[] arr = new int[5]; int arr[] = new int[5],也可以这样写将[]放到数组名后面,不过不常用。
格式2:元素类型[] 数组名=new 元素类型[]{元素,元素,......};
       例:int[] arr = new int[]{3,5,1,7}等同于int[] arr={3,5,1,7}
注意:格式中的数组名的数据类型是单独的数组类型(属于引用类型),和数组元素类型不一样哦,并非int类型等。
数组排序有:选择排序、冒泡排序、二分查找冒泡排序比选择排序效率高
最快的是希尔排序,三层循环加位运算哦,了解内容;系统自带函数Arrays.sort函数排序,开发中要是用它
下面总结下利用数组机选双色球,去试试手气,看自己随机的中奖概率如何,嘿嘿,没准运气好中个500万呢:D:D:D
  1. /**
  2. * 随机抽取算法
  3. * 需求:机选双色球
  4. *01~33号
  5. *6个号 作为红球
  6. *01~16
  7. *1个号 作为蓝球

  8. */
  9. import java.util.*;
  10. class ShuangSeQiu
  11. {
  12. public static void main(String[] args) {


  13. System.out.println(Arrays.toString(randomBall()));//Arrays在java.util.*,里面
  14. }
  15. public static String[] randomBall(){
  16. String[] pool={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33"};
  17. String[] balls=new String[7];
  18. boolean[] flags=new boolean[33];//数组默认元素值为“0”,布尔型为false
  19. int i=0;
  20. Random r=new Random();//用到类库中函数Random
  21. while(true){
  22. int index=r.nextInt(33);
  23. if(flags[index]==true){
  24. continue;
  25. }
  26. balls[i++] = pool[index];
  27. flags[index] = true;
  28. if(i==6){
  29. break; //当找到6个时候停止
  30. }
  31. }
  32. Arrays.sort(balls,0,5);
  33. //int index=r.nextInt(16);//同上,[0,16)
  34. //String blueBall=pool[index];//蓝球就1个字符,所以只需随机一个放进blueBall中
  35. //balls[6]=blueBall;
  36. balls[6] = pool[r.nextInt(16)];//这是对上面三条的简化
  37. return balls;

  38. }


  39. }
  40. //帮助理解
  41. //(flag[index]==false)==true;(falg[index]==true)==false
  42. //if(true)== if(!flag[index])==if((flag[index]==false))
  43. //if(false)==if(flag[index]) == if(falg[index]==true)
复制代码
输出结果:
每次运行输出结果都是随机的
[03, 11, 19, 21, 33, 14, 16]
[03, 11, 19, 20, 21, 22, 12]
......
上面算法中需要注意几点:
1、双色球号码是字符串,不是数字,所以要用String类型。
2、Arrays.sort(balls,0,5);//Arrays.sort(arg)系统数组字符串排序算法,0,5,表示排序0-5,因为双球是前面6个红球,后面一个蓝球,所以只排序前6个数组元素。
3、打印是将数组转换成字符串,System.out.println(Arrays.toString(randomBall()));用到了Arrays.tostring()方法

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马