You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#骰子模拟器特定数值下无法正常工作问题求助

解决C#骰子模拟器构造函数默认值不生效的问题

嘿,我来帮你搞定这个骰子模拟器的问题!看起来你在构造函数里的默认值判断逻辑可能没写对,导致输入面数小于3时没有正确切换到默认配置。我来给你梳理下问题所在,再提供修正后的完整代码。

常见问题分析

通常出现这种情况,大概率是构造函数里没有对输入的面数做合法性校验并替换默认值,或者校验逻辑写反了。比如直接把输入的sides赋值给属性,没有判断是否小于3,后续Roll的时候可能还会出现范围错误(因为Random.Next(1, sides+1)要求第二个参数必须大于第一个)。

修正后的完整代码

下面是符合你需求的骰子模拟器实现,我加了详细的注释说明:

using System;

public class DiceSimulator
{
    // 定义可维护的默认常量,方便后续修改默认配置
    private const int DefaultSideCount = 6;
    private const int DefaultInitialRollValue = 1;

    // 公开只读属性,外部只能获取面数和当前点数
    public int SideCount { get; private set; }
    public int CurrentValue { get; private set; }

    // 随机数实例,放在构造函数初始化避免重复创建导致的重复值问题
    private readonly Random _randomGenerator;

    public DiceSimulator(int requestedSides)
    {
        // 核心逻辑:校验输入面数,小于3则使用默认值
        SideCount = requestedSides >= 3 ? requestedSides : DefaultSideCount;
        
        _randomGenerator = new Random();

        // 根据需求初始化点数:如果是默认情况,用固定默认值;否则直接滚动一次
        if (requestedSides >= 3)
        {
            Roll();
        }
        else
        {
            CurrentValue = DefaultInitialRollValue;
        }
    }

    // 滚动骰子方法,返回新的点数
    public int Roll()
    {
        // 因为构造函数已经保证SideCount至少为3,这里无需额外校验
        CurrentValue = _randomGenerator.Next(1, SideCount + 1);
        return CurrentValue;
    }
}

关键细节说明

  • 默认值校验:构造函数里用三元运算符(或者if-else)判断输入的requestedSides,不符合要求就替换为DefaultSideCount,确保SideCount永远不会小于3。
  • 随机数实例优化:把Random实例放在构造函数初始化,而不是每次Roll都新建,避免短时间内多次Roll导致生成重复的随机数。
  • 初始点数控制:根据需求,当使用默认面数时,直接设置固定的默认点数(比如1);如果是合法输入,直接调用Roll生成随机点数,你也可以根据需求调整这里的逻辑。

测试示例

你可以用下面的代码测试效果:

// 测试输入小于3的情况(比如2面)
var defaultDice = new DiceSimulator(2);
Console.WriteLine($"默认骰子:面数={defaultDice.SideCount},当前点数={defaultDice.CurrentValue}");
// 输出:默认骰子:面数=6,当前点数=1

// 测试合法输入(比如10面)
var customDice = new DiceSimulator(10);
Console.WriteLine($"自定义骰子:面数={customDice.SideCount},当前点数={customDice.CurrentValue}");
// 输出:自定义骰子:面数=10,当前点数=1-10之间的随机数

这样就能完美解决你遇到的问题啦!

内容的提问来源于stack exchange,提问作者Samuel Chow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:34:33