我编写了一个带有子类的应用程序,该子类根据用户输入的边数掷骰子,并使用一个整数来掷骰子一定次数。
例如: 用户输入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',不过很多次掷骰子。对于每次迭代,总和不返回不同的数字。
我的主要目标是掷骰子的次数是用户要求的。使用Java数组存储结果。例如,每次我要执行下一个掷骰时,创建一对新骰子。这样,我可以将每对骰子存储在一个阵列中。
我正在尝试学习如何将它编成碎片,但我现在迷失了,我感到失败了。不能谢谢足以获得任何指导。 如果这一点令人困惑,我真的很抱歉,我不完全理解这些指示......
答案 0 :(得分:1)
您可以使用2D数组或哈希映射来执行此操作,但我更喜欢2x ArraList
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) + "%";
}
是你的答案吗? 我希望这有效。