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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

自己写了个双色球的小程序,是使用数组来实现的,代码有点小长,不知道还能不能优化。
  1. /*
  2. 双色球

  3. 本来开始是使用两个数组的,最后发现可以合并成一个,简化了一些代码。不过依然很长的代码
  4. 这个程序和其他的不一样的是在实现红球不重复这一块儿

  5. */

  6. class ShuangSeQiu
  7. {
  8. public static void main(String[] args) throws Exception
  9. {

  10. int[] ball =new int[7];
  11. getBall(ball);
  12. sortBall(ball);
  13. print(ball);
  14. }
  15. //随机产生红球(1-33)和蓝球(1-15),并存入数组中
  16. public static void getBall(int[] ball)
  17. {
  18. //首先产生红球,存在数组的前六位
  19. for (int x=0;x<ball.length-1 ;x++ )
  20. {
  21. ball[x]=(int)(Math.random()*32+1);
  22. //判断新产生的数是否和以前存在数组中的数相等,保证数组中的数都不相同
  23. while(x!=0)
  24. {
  25. for (int y=0;y<x ;y++ )//遍历已经产生的ball数组的同时添加判断条件
  26. {
  27. if(ball[x]!=ball[y])
  28. continue;
  29. else
  30. {
  31. x--;//让数组的初始化返回一步,从新产生数覆盖以前数组中的数
  32. break;
  33. }
  34. }
  35. break;
  36. }
  37. }
  38. //当所有红球产生后,在数组末尾生成蓝球即可
  39. ball[ball.length-1]=(int)(Math.random()*15+1);
  40. }

  41. //对数组进行排序
  42. public static void sortBall(int[] ball)
  43. {
  44. //只需要对数组前六位进行排序即可
  45. for (int x=0;x<ball.length-1-1 ;x++ )
  46. {
  47. for (int y=x+1;y<ball.length-1 ;y++ )
  48. {
  49. if(ball[x]>ball[y])
  50. {
  51. int temp=ball[x];
  52. ball[x]=ball[y];
  53. ball[y]=temp;
  54. }
  55. }
  56. }
  57. }
  58. //打印结果
  59. public static void print(int[] arr)
  60. {
  61. //先打印前六位红球
  62. for (int x=0;x<arr.length-1 ;x++ )
  63. {
  64. System.out.print(((arr[x]<10?("0"+arr[x]):arr[x]))+"\t");
  65. }
  66. //再打印最后一位蓝球
  67. System.out.print("蓝球 "+(arr[arr.length-1]<10?("0"+arr[arr.length-1]):arr[arr.length-1]));

  68. }

  69. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

0 个回复

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