【发布时间】:2019-03-31 02:30:40
【问题描述】:
我目前正在从我的学习书中做一些练习,其中一项任务是:编写一个骰子类“骰子”,其值在 1-6 之间。还应该有一个选择随机值的构造函数,以及一个也选择随机值的方法 roll()。还应该创建方法 getValue(),该方法将用于检索显示的值。为这个程序编写一个测试类。
Edit* 我将随机生成器移到构造函数中,将 roll 方法留空。构造函数已经随机化了,roll()方法应该怎么做?
这是我目前的代码:
public class Dice {
int value;
int currentRoll;
public Dice() {
Random rand = new Random();
this.value = 1;
this.currentRoll = rand.nextInt(6) + 1;
}
public int roll() {
Random rand = new Random();
this.currentRoll = rand.nextInt(6) + 1;
return this.currentRoll;
}
public int getValue() {
return this.currentRoll;
}
}
我不明白的是:为什么要在构造函数和 roll() 方法中随机取值?另外,我错过了什么?
【问题讨论】:
-
如果在调用
roll之前调用getValue会发生什么? -
@MadProgrammer 可以为
currentRoll设置任何默认值(null或0),因为尚未掷骰子 -
您可以将
Random作为构造函数参数并将其存储为实例变量。 -
@AndrewTobilko 并非如此,“die”没有“默认”值,因为它是原始值,所以不能是
null。通过随机化构造函数中的值,您可以克服“附加”状态规则的需要 -
记住,这是一个练习。该练习要求您以特定方式完成给定的任务。在现实生活中,骰子的默认值是多少?通过随机化构造函数中的值,如果用户在
roll之前调用getValue,您将减少额外的状态规则或错误条件的需要。您可能还会发现后面的练习描述了“为什么”它避免直接从构造函数调用roll
标签: java class random methods constructor