【菜鸟练习】用Java实现高尔顿瓶
问题描述
豆机,也称为梅花瓶或者高尔顿瓶,它是一个用来做统计实验的设备,以英国科学家弗兰克斯·高尔顿的名字来命名。它是一个三角形状的均匀放置钉子的直立板子,如下图所示:
实现思想
根据随机路径中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实现高尔顿瓶相关推荐
- 【java】高尔顿瓶
豆机 首先对每个豆子单独分析一下,若有8个槽,则每个豆子需面临7次路径的选择:左或者右,两种状态(暂用0和1态表示).总的来说,直到一个豆子掉入槽中,它选择的路径组合有2^7种.这就产生了一个如何产生 ...
- ***6.21-豆机 梅花瓶 高尔顿瓶
问题及代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:Slots.java *作 者:单昕昕 *完成日期:20 ...
- 菜鸟haqima的Java学习之路第一天
菜鸟haqima的Java学习之路第一天 导读:DOS命令 常用快捷键 Java的简单概述 (第一章 Java开发环境的搭建) 1.常用的DOS命令 1.1.怎么打开DOS命令窗口 win键+r(组合 ...
- 模拟豆机、高尔顿瓶【java】
package text1_3; //产生随机数0与1表示球的路径,最后狭槽中的小球数量可以用一个数组记录并且步数等于狭槽数-1:小球最终进入哪个槽中与向右的数量有关,并且是相等的 import ja ...
- 菜鸟笔记(一) - Java常见的乱码问题
2019独角兽企业重金招聘Python工程师标准>>> 本文将介绍一种Java Web/Api 开发常见的乱码问题. 前提摘要:在学习Java Web的过程中,乱码问题是经常遇到的, ...
- 菜鸟教程中Java语法(Java教程+Java面向对象)
Java基本数据类型 Java变量类型 Java运算符 Java循环语句 Java条件语句 Java switch case Java Number & Math类 Java Characte ...
- java递归空瓶换饮料_问题描述:一次买n瓶可乐,k个空瓶可以换一瓶饮料,那么一共能喝多少瓶饮料? | 学步园...
/** *问题描述:一次买n瓶可乐,k个空瓶可以换一瓶饮料,那么一共能喝多少瓶饮料? *下面用不同的方法实现了这个问题(Java实现): *1.递归方法 *2.非递归方法 *3.公式法 */ publ ...
- 菜鸟程序员Java系列
因工作原因初识Java,现自己动手一步步从头开始从头重构一个项目,此系列做一个踩坑日记,希望一步步记录自己的成长 菜鸟第一步 数据库连接(Tomcat版自带连接池) 此第一步是数据库的连接,现在数据库 ...
- 安卓小菜鸟重拾Java系列002.Java转义字符与与sax解析xml
已经好久没有更新博客了,炎热的夏天正如我的心情一样枯燥乏味,今年是互联的寒冬,作为一个菜鸟已经深深的感觉到了,因为自己失业了.从去年的年末的一些听闻,自己竟没有准备好迎接失业,以至于一年了,只比以前强 ...
- 菜鸟篇之Java入门学习【ZT】
初学者Java语言入门精典文章 Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案.在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考. 我在学习 ...
最新文章
- Hibernate简介2
- 【任务脚本】京jd东jd炸年兽活动任务全自动程序
- 用PHP写出显示客户端IP与服务器IP的代码
- IPM: Partner determination in Acquisition contract containing IP Product
- PE文件的感染C++源代码
- java.net.SocketException: Software caused connection abort: socket write erro
- json Date对象在js中的处理办法
- NOIP2013 写后感
- 我被男朋友整整欺骗了两年可结果却让我感动!
- 阿里情书 | 爱情是什么模样?想来想去,都是你的模样
- Spring 中的重试机制,简单、实用!
- 华硕重装后进入bios_华硕笔记本重装系统如何设置bios
- jetson xavier nx安装ROS Melodic
- HTTP引流工具Gor快速入门
- 人生是一场独自的修行_产品负责人经理–独自一人
- 应用深度学习function-loss-optimization 2020.8.24
- 什么是BN(Batch Normalization)
- Matlab中gray2ind函数用法
- Latex文字环绕踩坑记录
- 你知道APP扫码登陆的实现原理吗?