我正在尝试创建一个掷骰子程序来练习编写程序。我正在创建一个Dice对象。我希望能够创建一个模具,并在创建时说明面数。示例Dice d 6 = new Dice(6)。之后,我希望能够打印出滚动结果,而无需指定边数。在电话里。现在我有这个... System.out.println(d6.rollDie(6));.我希望能够只执行System.out.println(d6.rollDie); System.out.println(d6.rollDie());每次调用时都必须指定边的数量,这就否定了在对象中使用sides变量的意义。
这是我目前的Java代码。
//Main.java
public class Main {
public static void main(String[] args) {
Dice d6 = new Dice(6);
System.out.println(d6.sides);
System.out.println(d6.rollDie(6));
}
}
//Dice.java
import java.util.Random;
public class Dice {
int sides;
int roll;
Dice(int sides) {
this.sides = sides;
}
public int rollDie(int sides) {
this.sides = sides;
Random random = new Random();
int result = random.nextInt(sides + 1) + 1;
return result;
}
}
3条答案
按热度按时间deikduxw1#
使用已在构造函数中配置的边。只需要添加一个方法,调用原始的rollDie(),并将其作为参数:
o4hqfura2#
rollDie
似乎不应该接受参数。至少对于示例方法不是。另外,我推荐ThreadLocalRandom
。我很确定你目前的实现有一个一个问题(你有一个七面的骰子,而不是一个六面的)。把这些放在一起,看起来就像6ljaweal3#
方法不需要参数。
您可以从类方法 rollDie 中访问类fieldsides。
此外,您可以使用替代的 Random#nextInt 方法,该方法具有用于下限和上限的参数。
此外,如果您将在每个示例中多次调用此方法,则可以增加本地 Random 声明的范围,并将其作为字段放置。
总的来说,你的类如下。