这个问题的解决方案应该可以使用两个类来完成:你的主类和一个 Dice 类。
你的主类应该有你的main(){},其中包含提示用户输入和打印骰子的代码。
您的Dice 类中可能只需要两个方法,它们将是一个构造函数和一个获取骰子值的方法。
创建骰子时,您的骰子构造函数可以将骰子对象的掷骰值设置为从 1 到 6 的随机数(假设您使用 D6 进行 DnD 掷骰)。这将使您无需调用另一个方法来实际“滚动”骰子。
然后,您可以使用来自main() 的滚动值的 getter 来获取滚动值。这个getter只需要返回roll的值。
您的 Dice 类需要一个成员变量,该变量可以保存为新骰子生成的随机值——我建议您使用 int,因为您只需要整数。
在您的main(){} 中,您可以使用扫描仪来获取用户的输入,以了解他们想要掷多少骰子。根据他们的输入,您可以使用 for 循环,根据用户的输入检查条件。 (例如for(int i = 0 ; i <userInput ; i ++))。该循环将为用户想要滚动的每组骰子迭代一次。
在这个循环中,您可以在循环的每次迭代中创建四个Dice 对象。这将有效地给你四个“掷骰子”,因为每个骰子都用一个随机数实例化。
假设您为将在“骰子”类中保存骰子值的成员变量命名为 roll,您可以通过像这样的点符号访问骰子的值 dice1.roll() 这也可以在您的输出中使用,而不是而不是需要将返回的值分配给另一个变量。
最后,要检查哪个卷最低,您可以使用一系列 if - else 语句来检查哪个卷最低。我建议使用如下条件
if(dice1.roll() < dice2.roll() && dice1.roll() < dice3.roll() && dice1.roll() < dice3.roll()){
//print your dice rolls. If the condition is true, we know that dice1 had the
//lowest roll
}
然后您可以使用 else 检查 dice2 是否最低,另一个 else if 检查 dice3 和另一个检查 dice4。
在 sudo 代码中,您的主类可能看起来像这样
\\main
\\declare a scanner
\\declare int for user input
\\output: How many dice would you like to roll
\\input user input var is assigned the value of user input
\\for loop checking if i < userInput
\\Create new dice object dice1
\\Create new dice object dice2
\\Create new dice object dice3
\\Create new dice object dice4
\\check if dice1 is lowest
\\print out die rolls, totals, and lowest roll
\\else if check dice2 is lowest
\\print out die rolls, totals, and lowest roll
\\else if check dice3 is lowest
\\print out die rolls, totals, and lowest roll
\\else if check dice4 is lowest
\\print out die rolls, totals, and lowest roll
\\end for loop this loop will iterate how ever many times the user input
\\each loop will create 4 dice objects with random D6 values
\\essentially give you 4 "rolls" for each iteration of the loop
这个主类没有嵌套循环或 if 语句。
你的 Dice 类可能看起来像这样
\\ Dice
\\declare a private int named something like roll to hold the random value
\\constructor
\\assign roll a random int value between 1 and 6
\\getter
\\return the random value
这应该足以让您入门。
作为额外的奖励,如果您想让程序“运行”并要求用户提供另一组骰子并再次滚动它们 - 一遍又一遍,直到您关闭程序 - 您可以将main() 的主体,在提示用户输入之前开始,带有一个始终为 true 的 while 循环。这会创建一个无限循环(和嵌套循环,因此它不适用于您的解决方案)。但是,此循环将允许您的程序“运行”,直到您终止它正在运行的控制台。同样,如果您想将其用于您自己的用途,它不会满足您的特定问题的要求,如果您包括while(true){} 循环。
希望对大家有帮助
Mkreegs