1.题目:

2.思路:首先,先看简单情况:分析一下就会发现小球落在那个位置实际上与路径中有几个R有关(我选择分析R的数目,实际上分析L也是可以的)规律为:有n个R就到第(n+1)个槽

所以用一个数组 slots[ ]来存每一个槽里小球的数目,用random函数随机生成TRUE或FALSE,各有一半可能,TRUE对应R,FALSE对应L。用整数rnum记录一次路线中R的个数,在一次路线输出结束后slots[rnum+1]++。

最后条形图的输出直接看代码理解,自己举个例子对照图形画一下就明白了。

3.代码:

import java.util.Scanner;
import java.util.Random;public class BeanMachine {public static void main(String[] args){System.out.printf("Enter the number of balls to drop:");Scanner input = new Scanner(System.in);int bnum = input.nextInt();System.out.printf("Enter the number of slots in the beana machine:");int snum = input.nextInt();System.out.printf("\n");int[] slots = new int[snum + 5]; //创建数组slots用来装每个槽中小球的数目,从1开始Random r = new Random();for(int i = 0; i < bnum; i++) //有几个球循环几次{int rnum = 0;//表示路径中R的个数for(int j = 0; j < snum-1; j++)//有n个槽,判断n-1次{boolean bool = r.nextBoolean();//随机生成一个布尔数if(bool == true) //少写了一个等号,变成了赋值符号,第一次bool经过If后,后面每一项都成了true{char s = 'L';System.out.printf(s+" ");}else{char s = 'R';System.out.printf(s+" ");rnum++;}}slots[rnum+1]++; //有n个R对应会进第(n+1)个槽,给那个槽对应的数组元素加一表示一个球进入该槽System.out.printf("\n");}//输出条形图int maxh = slots[1];for(int i = 2; i <= snum; i++){if(maxh < slots[i]){maxh = slots[i];}}//找到最高的高度for(int i = maxh; i > 0; i--){for(int j = 1; j <= snum; j++){if(slots[j] < i) System.out.printf(" ");else System.out.printf("0");}System.out.printf("\n");}}
}

4.总结:犯了两个错误:(1)bool == true 写成了bool = true,导致输出变成了全L

(2) rnum刚开始定义为全局变量,每一次循环后没有清零导致数组越界。

【Java习题1】模拟豆机游戏相关推荐

  1. neogeo模拟街机游戏

    linux模拟街机游戏的软件主要有xmame和gngeo(我所知道的),xmame能模拟很多种街机硬件, 而gngeo则只模拟neogeo的游戏.以下我们主要说说neogeo街机游戏和gngeo这个软 ...

  2. Java笔记——控制台模拟“双色球”福利彩票游戏

    Java笔记--控制台模拟"双色球"福利彩票游戏 说明:本打算重新巩固java知识并重新记录笔记,但是现在对于一个20多年的语言而言,鄙人的能力实在是提炼不出来什么精华,直接上练手 ...

  3. Java语言制作吃豆人游戏

    (此项目源码已上传至Github网站,网址为GitHub - Ran-a/Pac-man-yar) 1  游戏界面 游戏的角色分别是追赶者和吃豆人,玩家使用方向键来控制吃豆人的运动方向并吃食物,将食物 ...

  4. 模拟豆机、高尔顿瓶【java】

    package text1_3; //产生随机数0与1表示球的路径,最后狭槽中的小球数量可以用一个数组记录并且步数等于狭槽数-1:小球最终进入哪个槽中与向右的数量有关,并且是相等的 import ja ...

  5. 用Java做的模拟“双色球”机选号码

    //定义的彩票这个对象的类:包括属性和行为 public class Lottery {       public  int  red;       public  int  blue;       ...

  6. java模拟atm_Java第一课——模拟ATM机

    Java第一课--模拟ATM机 开学第一节Java课,跟之前老师强调的一样--上课简单说了两句就直接开始了考试. 总结一下第一次做Java遇到的问题: 第一个是老师一直在强调要先考虑整体的思路,先把整 ...

  7. 街机飞机游戏合集_立即在Internet存档上播放1,785个经典街机游戏(无需四分之一)...

    街机飞机游戏合集 Arcades, in most cities, are a distant memory, but you can relive over a thousand classic g ...

  8. java程序模拟atm机_Java项目实现模拟ATM机

    本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { // ...

  9. java web atm机_Java项目实现模拟ATM机

    本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { // ...

最新文章

  1. Gartner 2019基础设施和运维十大趋势:Serverless、边缘计算、SaaS 变复杂等
  2. Glide @GlideModule 注解使用
  3. CS231n:卷积神经网络
  4. wcf分布式构架集群案例解决方案
  5. 06旋转数组的最小数字
  6. java程序中单方法接口通常是,Java基础知识整理
  7. 互联网视频直播技术(广电总局、优酷土豆、XX直播)
  8. Threejs初级教程
  9. 谁能教教我, 这个插件是怎么破解 yunfile, yifile, ctfile, 77file 等网盘的
  10. 联想电脑重装win7系统详细图文教程
  11. win7无法连接打印机拒绝访问_打印机共享时拒绝访问
  12. BUUCTF~Misc~Test2
  13. 深度学习、机器学习毕业设计 - 选题建议
  14. 关于主机连wife 虚拟机linux系统上网问题解决(基于centos7)
  15. mouseover和mouseout区别
  16. 微软Visio流程图软件,Visio流程图制作工具下载安装教程(1)
  17. 第十四节 OSAL工作原理
  18. php 超过一行用省略号,php 超长用省略号代替
  19. 拼多多item_get_app - 根据ID取商品详情原数据
  20. c语言中break语句的功能,C语言break语句

热门文章

  1. python实现滚动字幕
  2. 收费邮箱有什么好处?会员电子邮箱怎么注册呢?
  3. C#中使用Chrome内核的CefSharp WinForm访问页面
  4. 互联网金融系列-支付清算体系介绍-上
  5. 嵌入式Linux C基本知识点总结
  6. 天思软件启动提示:ERROR LOADING MIDAS.DLL错误解决方法。
  7. Java调用linux终端命令
  8. 零基础小白复现Java 若依项目
  9. 【英语四六级-必背单词】高中英语单词 (I) - MP3试听与下载
  10. 解决labelimg闪退