C#骰子滚轮无法使用特定的数字执行

C#骰子滚轮无法使用特定的数字执行,c#,constructor,C#,Constructor,我尝试运行以下代码来制作一个骰子滚轮,它可以返回具有特定面数的骰子面的正确当前值,这样,如果我输入的面数小于3,构造函数将返回默认面数和默认面数。否则,骰子将根据给定的数字滚动。但是,当我尝试输入小于3的数字时,面数根本不会返回默认值。我该怎么做才能修好它 public class Die { // Implement your 'Die' class here private int numFaces; private int faceValue; Rando

我尝试运行以下代码来制作一个骰子滚轮,它可以返回具有特定面数的骰子面的正确当前值,这样,如果我输入的面数小于3,构造函数将返回默认面数和默认面数。否则,骰子将根据给定的数字滚动。但是,当我尝试输入小于3的数字时,面数根本不会返回默认值。我该怎么做才能修好它

public class Die
{
    // Implement your 'Die' class here
    private int numFaces; 
    private int faceValue;
    Random rand = new Random();



    // Default Constructor
    public Die()
    {
        numFaces = 6;
        faceValue = 1;


    }

    // Random Constructor
    public Die(int faces)
    {

        if (faces >=3)
        {
            numFaces = faces;
            RollDie();
            GetNumFaces();
            faceValue = GetFaceValue();
        }

        else
        {
            numFaces = 6;
            faceValue = 1;
        }



    }



    // Rolls the die
    public void RollDie()
    {

        faceValue = rand.Next(numFaces) + 1;

    }


    // Get the vlaue of current face
    public int GetFaceValue()
    {

        return faceValue;
    }

    // Get the number of face
    public int GetNumFaces()
    {

        return numFaces;
    }
}

// end Class Die


public class Program
{
    public static void Main()
    {

        Die myDie = new Die(10);

    }

}

}

以下内容对我很有用:

public class Die
{
    private System.Random rand;
    private int faceValue, numFaces;

    public int GetFaceValue()
    {
        return faceValue;
    }

    public int GetNumFaces()
    {
        return numFaces;
    }

    public void Roll()
    {
        faceValue = rand.Next(1, numFaces + 1);
    }

    public Die()
    {
        rand = new System.Random();
        faceValue = 1;
        numFaces = 6;
    }

    public Die(int faces) : this()
    {
        if (faces >= 3) numFaces = faces;
    }
}

public static class Program
{
    public static void Main()
    {
        Die d1 = new Die(10);
        Die d2 = new Die(2);
        System.Console.WriteLine("D1: {0} faces; value: {1}",
                                 d1.GetNumFaces(),
                                 d1.GetFaceValue());
        System.Console.WriteLine("D2: {0} faces; value: {1}",
                                 d2.GetNumFaces(),
                                 d2.GetFaceValue());
    }
}

编辑:我想你正在做这个();由于初始化时它不会要求滚动骰子,因此我编辑了代码以反映这一点。

“面数根本不会返回默认值”,那么它会返回什么?这里有一个提示:请不要在构造函数中调用RollDie()。构造函数应该初始化对象。您现在编写类的方式可能应该将其命名为
DieRoll
,并将该方法命名为
RollDie
private
。不要使用
GetFaceValue()
而是让
RollDie
返回一个
int
并使用它生成模具辊。显然,这是家庭作业,因此可能会要求您以这种特定的方式设置该类,但希望您能够更改此设置。您应该将
的实例设置为随机的
静态的
,以便在使用两个或更多骰子时避免出现错误。