当前位置: 首页 > 知识库问答 >
问题:

尝试在Java中创建骰子滚轮统计应用程序

徐昆
2023-03-14

我编写了一个包含子类的应用程序,该子类将根据用户输入的边数掷骰子,并使用整数将掷骰子一定次数。

如:用户输入6面,想掷骰子1000次。

我还应该使用一个和我编码的数组相似的数组。

我目前拥有的:

public class DDiceRoller {

public static void diceStats() {
    int maxNum = DiceRolling.diceSides;
    Scanner sc = new Scanner(System.in);
    int randomValue = 1 + (int) (Math.random() * maxNum);
    int randomValue2 = 1 + (int) (Math.random() * maxNum);
    int die1 = (randomValue);
    int die2 = (randomValue2);
    int sum = die1 + die2;
    int rollnum;
    int idx;
    System.out.println("Welcome to the Dice Roll Stats Calculator!");
    int[] combinations = new int[maxNum]; //I haven't even used this variable yet, don't know how.

    System.out.println("Enter amount of rolls: ");
    rollnum = sc.nextInt();

    for (idx = 0; idx < rollnum; idx++) {
    System.out.println(sum); //I know this is wrong, just don't know what to do.
    }

  }
}

然后,计算器将运行程序并根据程序运行的次数输出百分比,从而...所以像这样...

所需输出:

Total    Count    Percentage
-----  ---------  ----------
   2        123     3.01%    
   3        456     6.07%    
   4        etc     3.19%    
   5        ???     4.45%    
   6        ???     8.90%    
   7        ???     8.62%    
   8        ???     7.63%    
   9        ???     6.92%    
  10        ???     5.40%    
  11        ???     6.96%    
  12        ???     8.36%    

当前输出:现在我得到的都是返回的相同值,因为我现在用' for '循环所做的都是重复' sum ',不管掷骰子多少次。sum也不会为每次迭代返回不同的数字。

我的主要目标是按照用户的要求掷骰子任意次。使用Java数组存储结果。例如,每次我要执行下一次掷骰子时,创建一对新的骰子。这样,我可以将每对骰子存储在一个数组中。

我试图学习如何将其分段编写,但我现在非常迷茫,以至于我感到挫败。非常感谢你能提供的任何指导。我真的很抱歉,如果这令人困惑,我不完全理解说明...

共有1个答案

纪实
2023-03-14

您可以使用2D数组或哈希映射来实现这一点,但我更喜欢2x数组列表

NumberFormat formatter = new DecimalFormat("#0.00");  

ArrayList<Integer> numbers = new ArrayList<Integer>();
ArrayList<Integer> counts = new ArrayList<Integer>();

int maxNum = DiceRolling.diceSides;
Scanner sc = new Scanner(System.in);
int rollnum;
int randomValue;

System.out.println("Welcome to the Dice Roll Stats Calculator!");
System.out.println("Enter amount of rolls: ");
rollnum = sc.nextInt();


for (int i  = 0; i < rollnum; i++) {

    randomValue = (1 + (int) (Math.random() * maxNum)) + (1 + (int) (Math.random() * maxNum));

    if(numbers.contains(randomValue)){
        int position = numbers.indexOf(randomValue);
        counts.set(position, counts.get(position)+1);
    }else{
        numbers.add(randomValue);
        counts.add(1);
    }

}

System.out.println("Total\tCount\tPercentage");
System.out.println("-----\t---------\t----------");
for(int i = 0; i<numbers.size(); i++){
    System.out.println(numbers.get(i) +"\t" + counts.get(i) + "\t" + formatter.format(((double)(counts.get(i)*100))/rollnum) + "%";
}

这是你的答案吗?我希望这行得通。

 类似资料:
  • 我的任务是创建一个龙与地下城骰子滚动程序,其中四个骰子滚动,最高的三个数字被记录下来,最低的数字被放到一边。 该程序需要使用面向对象编程,这就是我遇到问题的地方。 此外,不能使用嵌套的If语句或循环。 我试图找出如何将每个类彼此分开编码。 我需要一个将运行程序本身的类,一个询问使用程序的人他们想要掷多少组骰子的类,一个实际表示掷骰子集的类,一个表示掷骰子系列的类(这是显示骰子1掷出的骰子,掷出的骰

  • 我正试图用python做一个掷骰子程序,给定用户在边、骰子和掷骰子上的输入来掷骰子。目前这段代码或多或少是有效的,但是我遇到的问题是,假设我让< code>3个骰子滚动< code>3次,骰子有< code>6个面。 我的代码显示如下: 当我需要它显示为: 这是我目前为止的代码。我的猜测是,它与我的参数和参数为空有关?我不完全确定。以下是我的代码:

  • 我停在一个点上,我需要弹出一个窗口,通知用户他们的约会在15分钟后。当我运行代码时,我得到一个sql错误。非常感谢您的帮助。 我用实时来代替变量,效果很好。当我把变量放回时,我得到下面列出的错误。

  • 我对java非常陌生,我为自己设定了一个目标,即制作一个掷骰子程序(保持小)。最终目标是能够掷出用户选择的骰子量,并能够让每个骰子具有不同数量的面(如果需要),我让它获得骰子的数量和每个骰子的面数。这是我为它做的代码(可能真的很糟糕,如果是的话,很抱歉): 现在我想显示< code>ArrayList,但我想将其显示为 "骰子1掷出# 掷骰子2 # " 等等,我迷失了如何做到这一点,特别是对于不同

  • 问题内容: 我正在尝试编写一个rollDice(int number,int nSides)方法,该方法返回滚动带有nSides边的数字骰子的总结果。 因此,例如rollDice(3,6)应该返回滚动3个六边骰子的结果(加上3到18之间的数字)。 当我输入1 来解决此问题时,下面的方法返回负数? 问题答案: 你只需要初始化和各一次,所以我已经从循环中去除它们。nextInt(int)方法选择一个从

  • 我确信这是微不足道的,但我无法弄清楚。我的老师刚刚向我们展示了如何使用 .下一页();昨晚的陈述,我被告知要写一个作业,刺激两个掷骰子并比较它们。我写出了代码,一切都很好,直到我将骰子2添加到我的控制台.writeline。我在这里错过了什么? 添加dice2后,我得到以下错误,当我移除dice2时,这些错误都消失了。 )预期 ;预期 无效的表达式术语')' 只有赋值、调用、递增、递减、等待和新的