因此,我对Java语言非常陌生,而且我正在尝试为D&D(龙与地下城)的角色统计生成组合一个骰子。
我希望程序做的是滚动x数D6,x次。 X由用户输入。我还需要程序询问是否要在D6卷上重新滚动1的结果。此外,该程序必须只保留掷骰子的最高3个数字。然后,它需要输出每组骰子卷的结果,而不是将它们全部加在一起。
所以一个例子是:我想要4次D6滚动6次,并重新滚动1次。程序输出将类似于:
你的结果是:
10
12
13
15
17
11.
我试着用3个类写这个,虽然我知道它不需要有3个类来操作。从项目的角度来看,额外的类更多是一项要求。我已经设法编写了掷骰子的必要代码,但正如我所说的那样,我很新,并且几乎不知道该怎么做。我到目前为止的代码是:
//Scanner is implemented in preparation for user input as more coding is
//added
import java.util.Scanner;
public class RollDie {
public static void main(String[] args) {
int SIDES = 6; // how many sides on the die?
// roll should be 1 through SIDES
int roll = (int) (Math.random() * SIDES) + 1;
// print result
System.out.println(roll);
}
}
具有友好用户输入的一流解决方案如下所示:
private final static int SIDES = 6;
public static void main(String[] args) {
java.util.Scanner scanner = new java.util.Scanner (System.in);
System.out.println("Number of dice?");
final int dice = scanner.nextInt();
System.out.println("Number of rolls?");
final int rolls = scanner.nextInt();
System.out.println("Reroll result 1? Enter y for yes");
final boolean reroll = scanner.next().equals("y");
for (int r = 0; r < rolls; r++) {
int allDice = 0;
for (int d = 0; d < dice; d++) {
int roll = (int) (Math.random() * SIDES) + 1;
while (reroll && roll == 1) {
roll = (int) (Math.random() * SIDES) + 1;
}
allDice += roll;
}
System.out.println(allDice);
}
}