好吧所以我必须编写一个类和驱动程序,用户输入骰子数和滚动数。然后我必须根据骰子的数量制作一个数组* 6.但我得到错误。像arrayindexoutofboundsexception。
在我制作数组后,我必须用随机数填充它并使用直方图来显示程序。所以程序看起来应该是这样的 请在这里给予任何积极的帮助,我是这个编程的新手,我很想了解更多。我似乎无法弄清楚Y / N区域的陈述是否可以启动该程序
Welcome to the dice-rolling simulator!
Do you wish to run a simulaton? Y/N: x
that was an invalid option. Please try again.
Do you wish to run a simulation? Y/N: y
How many dise di you wish to roll? 2
How many rolls to you wish to make? 100000
2:@@@@@@
3:@@@@
4:@@@@@@@@@@@
5:@@@@@
6:@@
7:@
8:
9:@@@@@@@@@@
10:@@@
11:@@@@@@@@@@@@@@
12:@@@@@@
//我必须给你@符号,因为*在这里不起作用
这是我的程序更新了!我如何创建直方图?
package dice;
import java.util.Scanner;
import java.util.Random;
public class Dice
{
public static Scanner in = new Scanner (System.in);
private int dice = 0;
private int roll = 0;
private int start;
private int[] diceAr;
private int[] rollAr;
private int simDice;
private String star = "*";
//****************************************************************
public Dice()
{
System.out.println("Welcome to the dice-rolling simulator!\n");
System.out.println("Do you wish to run a simulation? Y/N; ");
//start = in.nextInt();
while (true) {
System.out.print ("How Many Dice Do You Want To Roll? ");
dice = in.nextInt();
simDice = (dice * 6)-1;
diceAr = new int[simDice];
if (dice > 0)
break;
}
while (true) {
System.out.print ("How Many Times Do You Want To Roll? ");
roll = in.nextInt();
rollAr = new int[roll];
if (roll > 0)
break;
}
}
//**********************************************
// public void display()
// {
//
for ( int i = 0; i < simDice; i++)
// {
// diceAr[i] = (int)(Math.random()* simDice);
//
// }
// for(int i = 0; i<simDice; i++)
// {
// System.out.println((i + dice) + ". " + diceAr[i]);
// }
//
// }
//*********************************************************
public void display(int diceAr[], int simDice, int roll)
{
for(int i=0; i < simDice; i++)
{
diceAr[i] = (int) (Math.random()* simDice);
}
for(int i=0; i < roll; i++)
{
}
}
}
答案 0 :(得分:2)
从程序要求的问题的措辞和你给出的样本直方图来看,似乎编写了一个程序来模拟滚动 N 骰子 M 次然后对卷进行结果直方图(即每卷上骰子上数字的总和)。因此,如果你输入3个骰子和100个骰子,就应该好像用手碾压3个骰子100次。
除了ArrayIndexOutOfBoundsException问题之外,不代码正在做什么。由于这是录取作业,我不打算给出任何代码,至少在这一点上是这样。但我确实有一些建议/问题可能会帮助您更好地思考问题,也许您可以在考虑之后向我们展示您是如何更改代码的。
首先,考虑实际手动完成任务。找到两个或三个骰子,然后滚动它们,比如20次,然后在纸上画出结果的直方图。您可能会发现,单独这样做可以让您深入了解您的计划必须做什么并跟踪。
接下来,以下是一些可能有助于集中思考的问题:
全部考虑一下,手动执行“实验”,然后回复我们您对程序所做的更改以及您可能遇到的新问题。
答案 1 :(得分:0)
你宣称diceAr是大小'骰子',但随后用一个变量上传到'simDice',即=骰子* 6。