问题描述

豆机,也称为梅花瓶或者高尔顿瓶,它是一个用来做统计实验的设备,以英国科学家弗兰克斯·高尔顿的名字来命名。它是一个三角形状的均匀放置钉子的直立板子,如下图所示:

实现思想

根据随机路径中R的个数以判断小球落入第几个槽,统计每个槽的小球个数。

实现提示

创建一个数组来存取槽中小球的个数。
注意随机性为50%。

代码

高尔顿瓶类:

public class BeanMachine {private int initialBalls;private int initialSlots;private int[] slots;public BeanMachine() {this(1,5);}public BeanMachine(int i,int n) {initialBalls = i;initialSlots = n;slots = new int[n];}public static void menu() {java.util.Scanner input = new java.util.Scanner(System.in);int balls;int slots;System.out.print("Enter the number of balls to drop: ");balls = input.nextInt();System.out.print("Enter the number of slots in the bean machine: ");slots = input.nextInt();BeanMachine mine = new BeanMachine(balls,slots);mine.play();}public void play() {for(int i = 1;i <= initialBalls;i++) {printPath();}System.out.println("");printChart();}public void printPath() {int judge;int numberOfR = 0;for(int i = 0;i < initialSlots-1;i++) {judge = (int)(Math.random()*2);if(judge == 0) System.out.print("L");if(judge == 1) {numberOfR++;System.out.print("R");}}System.out.println("");slots[numberOfR]++;}public void printChart() {int max = getMax();for(int i = 0;i < max;i++) {for(int j = 0;j < initialSlots;j++) {if(slots[j] >= max - i)System.out.print("0");elseSystem.out.print(" ");}System.out.println("");}}public int getMax() {int max = slots[0];for(int i = 0;i < slots.length; i++) {if(slots[i] > max) max = slots[i];}return max;}   }

主类:

public class test_BeanMachine {public static void main(String[] args) {BeanMachine.menu();}}

debug

其中代码构造函数中:

public BeanMachine(int i,int n) {initialBalls = i;initialSlots = n;int [] slots = new int[n];}

int [] slots = new int[n]

重新创建了一个与数据域slots数组同名的int数组,将数据域覆盖,导致slots未分配内存空间,导致后续出现逻辑错误!!!

【菜鸟练习】用Java实现高尔顿瓶相关推荐

  1. 【java】高尔顿瓶

    豆机 首先对每个豆子单独分析一下,若有8个槽,则每个豆子需面临7次路径的选择:左或者右,两种状态(暂用0和1态表示).总的来说,直到一个豆子掉入槽中,它选择的路径组合有2^7种.这就产生了一个如何产生 ...

  2. ***6.21-豆机 梅花瓶 高尔顿瓶

    问题及代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:Slots.java *作 者:单昕昕 *完成日期:20 ...

  3. 菜鸟haqima的Java学习之路第一天

    菜鸟haqima的Java学习之路第一天 导读:DOS命令 常用快捷键 Java的简单概述 (第一章 Java开发环境的搭建) 1.常用的DOS命令 1.1.怎么打开DOS命令窗口 win键+r(组合 ...

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

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

  5. 菜鸟笔记(一) - Java常见的乱码问题

    2019独角兽企业重金招聘Python工程师标准>>> 本文将介绍一种Java Web/Api 开发常见的乱码问题. 前提摘要:在学习Java Web的过程中,乱码问题是经常遇到的, ...

  6. 菜鸟教程中Java语法(Java教程+Java面向对象)

    Java基本数据类型 Java变量类型 Java运算符 Java循环语句 Java条件语句 Java switch case Java Number & Math类 Java Characte ...

  7. java递归空瓶换饮料_问题描述:一次买n瓶可乐,k个空瓶可以换一瓶饮料,那么一共能喝多少瓶饮料? | 学步园...

    /** *问题描述:一次买n瓶可乐,k个空瓶可以换一瓶饮料,那么一共能喝多少瓶饮料? *下面用不同的方法实现了这个问题(Java实现): *1.递归方法 *2.非递归方法 *3.公式法 */ publ ...

  8. 菜鸟程序员Java系列

    因工作原因初识Java,现自己动手一步步从头开始从头重构一个项目,此系列做一个踩坑日记,希望一步步记录自己的成长 菜鸟第一步 数据库连接(Tomcat版自带连接池) 此第一步是数据库的连接,现在数据库 ...

  9. 安卓小菜鸟重拾Java系列002.Java转义字符与与sax解析xml

    已经好久没有更新博客了,炎热的夏天正如我的心情一样枯燥乏味,今年是互联的寒冬,作为一个菜鸟已经深深的感觉到了,因为自己失业了.从去年的年末的一些听闻,自己竟没有准备好迎接失业,以至于一年了,只比以前强 ...

  10. 菜鸟篇之Java入门学习【ZT】

    初学者Java语言入门精典文章 Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案.在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考. 我在学习 ...

最新文章

  1. Hibernate简介2
  2. 【任务脚本】京jd东jd炸年兽活动任务全自动程序
  3. 用PHP写出显示客户端IP与服务器IP的代码
  4. IPM: Partner determination in Acquisition contract containing IP Product
  5. PE文件的感染C++源代码
  6. java.net.SocketException: Software caused connection abort: socket write erro
  7. json Date对象在js中的处理办法
  8. NOIP2013 写后感
  9. 我被男朋友整整欺骗了两年可结果却让我感动!
  10. 阿里情书 | 爱情是什么模样?想来想去,都是你的模样
  11. Spring 中的重试机制,简单、实用!
  12. 华硕重装后进入bios_华硕笔记本重装系统如何设置bios
  13. jetson xavier nx安装ROS Melodic
  14. HTTP引流工具Gor快速入门
  15. 人生是一场独自的修行_产品负责人经理–独自一人
  16. 应用深度学习function-loss-optimization 2020.8.24
  17. 什么是BN(Batch Normalization)
  18. Matlab中gray2ind函数用法
  19. Latex文字环绕踩坑记录
  20. 你知道APP扫码登陆的实现原理吗?

热门文章

  1. python不等于怎么表达_Python不等于怎么写
  2. miRNA-转录组-蛋白组联合分析
  3. 通过新建浏览器书签的方式给网页注入js代码
  4. JavaScript 05
  5. 3D建模都用哪些软件?
  6. 【python】google的经纬度定位查询API
  7. (JButton) e.getSource();是什么意思
  8. bzoj4173 数学
  9. 用MATLAB求系统状态方程,利用MATLAB求解系统的状态方程..doc
  10. 计算机软件 专利挖掘,专利挖掘五步法,你学会了吗?