我正在尝试创建一个程序,它将滚动2个不同的模具,可以是自动6面或自定义边,由用户决定。截至目前我已经走到这一步,需要帮助搞清楚如何从roll()
方法中获得任何事情,我已经尝试过运行它并且它不会给我随机的它应该。
有任何想法吗?
import java.util.*;
import java.lang.*;
public class RollOfTheDice
{
public static void main(String[] args)
{ Die firstDie, secondDie, face;
firstDie = new Die();
secondDie = new Die();
face = new Die();
face.getSides();
firstDie.roll();
secondDie.roll();
System.out.println("First die roll results:.");
}
}
class Die
{
int numberOfSides; //field value
public Die() //constructor
{ numberOfSides = 6;
}
public int getSides()//get method
{ Scanner inputDevice = new Scanner (System.in);
System.out.println("If looking for a custom sided die, please enter number of sides now:");
numberOfSides = inputDevice.nextInt();
return numberOfSides;
}
public void setSides(int Sides) //setmethod
{
numberOfSides = Sides;
}
public int roll()
{
//return a random-generated integer value between 1 and amount of sides
int rollResult = ((int)(Math.random() * 100)% numberOfSides + 1);
return rollResult;
}
}
首先,你实际上并没有打印过滚动结果。
因此,要获得该基本输出,可以将main()方法的最后3行更改为以下内容:
int firstRoll = firstDie.roll();
int secondRoll = secondDie.roll();
System.out.println("First die roll results:" + firstRoll);
System.out.println("Second die roll results:" + secondRoll);
这至少应该让你展示两个骰子卷。
既然答案已被接受,我想我会给出一些指示;
public int getSides()//get method
{ Scanner inputDevice = new Scanner (System.in);
System.out.println("If looking for a custom sided die, please enter number of sides now:");
numberOfSides = inputDevice.nextInt();
return numberOfSides;
}
我建议不要在getSides()期间执行IO,这样会产生设置模具中边数的副作用。
相反,让main方法运行“askForSides”方法(包含扫描程序)。然后将此参数传递给setSides()方法。
其次,我建议不要将当前的构造函数设置为固定的6,而是将其替换为:
public Die() //constructor
{
numberOfSides = 6;
}
public Die(int sides) {
this.numberOfSides = sides;
}
更好(好吧,我还是喜欢它)是:
public Die() //constructor
{
this(6);
}
public Die(int sides) {
this.numberOfSides = sides;
}
这样只有1个构造函数实际设置了边,另一个只提供了一个默认值。这使得重构从长远来看更容易。
如果你有一个以side作为参数的构造函数,你可以使用它而不是setSides方法:)
你不是简单地忘记打印出实际值吗?
int first = firstDie.roll();
System.out.println("First die roll results: " + first);
你正在调用roll
,但没有对它返回的值做任何事情。