我对所有的编程都是非常非常陌生的,我遇到了一些麻烦.我有这个方法,它生成一个介于1-6之间的随机数(它应该是用来模拟掷骰子的),我想要做的是通过一个输入来使用户能够改变骰子有多少边(在本例中是int nr的第二个参数).

我希望能够使用方法本身之外的一段代码将7更改为任何数字. 我想不通我该如何完成这件事.

static int RullaTärning(Random slumpObjekt)
{
    int nr = slumpObjekt.Next(1, 7); 
    return nr;
}

任何和所有的帮助是感激的,如果有一些信息丢失,需要解决这个问题,请让我知道.

谢谢

我曾try 将7更改为整数变量"side",但我不知道如何在程序的后面更改该整数变量. 我try 了一大堆随机的东西,但我根本不知道如何做到这一点.我真的迷路了.

推荐答案

您设法意识到,您需要以某种方式将第二个参数设置为Next方法变量.太棒了!让我们开始吧:

static int RullaTärning(Random slumpObjekt)
{
    int sides = 6;
    int nr = slumpObjekt.Next(1, sides +1); 
    return nr;
}

现在,您需要做的就是从用户那里获取值,而不是硬编码:

static int RullaTärning(Random slumpObjekt, int sides)
{
    int nr = slumpObjekt.Next(1, sides+1); 
    return nr;
}

如果您不想强制用户 Select 边数(大多数骰子将是6面),您可以使用默认设置:

static int RullaTärning(Random slumpObjekt, int sides = 6)
{
    int nr = slumpObjekt.Next(1, sides+1); 
    return nr;
}

// Can be used as
int roll = RullaTärning(rnd); // no second param => 6 will be used
// or
int damage = RullaTärning(rnd, 16);

我总是鼓励您判断您的输入:

static int RullaTärning(Random slumpObjekt, int sides = 6)
{
    // Assuming we had a requirement to allow no less than 6 sides.
    if( sides < 6 ) throw new ArgumentException("Dice need at least 6 sides.", nameof(sides));
    // Mind that I did not check `slumpObjekt` for null,
    // because a NullReferenceException will be thrown anyway
    // on the attempt to call `Next` on `null`.
    int nr = slumpObjekt.Next(1, sides+1); 
    return nr;
}

// because there is always "that guy" who will try
int nonsense = RullaTärning(rnd, -5);

...一个非常迂腐的家伙刚刚让我提到了干净的代码和"没有魔术数字"……

const int MINIMAL_ALLOWED_SIDES = 6; // Now we know why "6" and 
                                     // we only need to change 1 place in code 
                                     // if requirement of minimal allowed sides 
                                     // changes
static int RullaTärning(Random slumpObjekt, int sides = MINIMAL_ALLOWED_SIDES)
{
    if( sides < MINIMAL_ALLOWED_SIDES) throw new ArgumentException($"Dice need at least {MINIMAL_ALLOWED_SIDES} sides.", nameof(sides));
    int nr = slumpObjekt.Next(1, sides+1); 
    return nr;
}

Csharp相关问答推荐

更改对象的旋转方向

当通过Google的Gmail Api发送邮件时,签名会产生dkim = neutral(正文散列未验证)'

REST API端点中异步后台代码执行的类型

如何在NodaTime中为Instant添加一年?

返回TyedResults.BadRequest<;字符串>;时问题详细信息不起作用

共享暂存/生产环境中Azure事件中心的建议配置

Automapper 12.x将GUID映射到字符串

我的MRG32k3a算法实现返回的数字超出了预期的[0,1]范围

在不添加不必要的尾随零的情况下本地化浮点型?

net中从位图获取坐标和绘制折线

当试图限制EF Select 的列时,如何避免重复代码?

JsonSchema.Net删除假阳性判断结果

如何将%{v_扩展}转换为%{v_扩展}>>

在.NET8中如何反序列化为私有字段?

KeyDown从我的文本框中删除输入,如何停止?

如何在一次数据库调用中为ASP.NET核心身份用户加载角色

C#如何获取字符串中引号之间的文本?

.NET8支持Vector512,但为什么向量不能达到512位?

如果图表S批注包含使用LINQ的具有特定名称的批注,我如何签入C#

docker-compose拒绝连接到同一网络中的其他容器