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

多维数组计分板负索引引发IndexOutOfRangeException问题求助

嗨,我来帮你拆解并解决计分板开发中遇到的这两个核心问题~

解决计分板开发的两大困境

一、修复xIndex=-1时的IndexOutOfRangeException异常

这个异常的原因非常明确:C#的数组索引是从0开始的,你的二维数组string[,] table = new string[104, 15],第一个维度(x方向)的有效索引范围是0~103,直接用xIndex=-1去访问table[xIndex, ...]肯定会触发越界。

你提到初始数据为{"T ,T ,P ,P B,T ,B ,B ,B ,B ,T ,B ,P "}时触发异常,说明你的代码可能把xIndex=-1直接当成了数组索引使用。正确的做法是把「初始数据填充」和「正常数组索引访问」的逻辑彻底分开:

// 你的初始数据数组
string[] initialLayoutData = {"T ,T ,P ,P B,T ,B ,B ,B ,B ,T ,B ,P "};

if (xIndex == -1)
{
    // 单独处理初始数据填充逻辑,而非直接访问table[-1, y]
    string[] splitValues = initialLayoutData[0].Split(',').Select(val => val.Trim()).ToArray();
    
    // 将处理后的值填充到目标行(这里假设是第0行,可按需调整)
    int targetRow = 0;
    for (int y = 0; y < splitValues.Length; y++)
    {
        if (y < table.GetLength(1)) // 避免超出第二维度的范围
        {
            table[targetRow, y] = splitValues[y];
        }
    }
    
    // 填充剩余列(如果初始数据长度小于15)
    for (int y = splitValues.Length; y < table.GetLength(1); y++)
    {
        table[targetRow, y] = ""; // 或设置你需要的默认占位符
    }
}
else if (xIndex >= 0 && xIndex < table.GetLength(0))
{
    // 正常处理xIndex对应行的布局生成逻辑
    // ... 你的原有代码
}
else
{
    // 可选:处理无效索引,比如抛出友好提示或记录日志
    throw new ArgumentOutOfRangeException(nameof(xIndex), "xIndex需在0~103之间,或设为-1表示加载初始布局");
}

这样就彻底避免了越界问题,因为我们用条件判断把xIndex=-1的特殊情况单独处理,没有直接用它去索引数组。

二、修复xIndex=0时布局不符合预期的问题

要解决这个问题,你可以按以下步骤逐步排查调整:

  1. 明确预期布局:先把xIndex=0对应的行(table[0,0]到table[0,14])每个位置的预期值列出来,比如:

    预期效果:[T, T, P, P B, T, B, B, B, B, T, B, P, "", "", ""]
    
  2. 对比实际生成结果:打印出当前xIndex=0时table[0,y]的所有值,定位哪些位置和预期不符。常见的问题包括:

    • 分割初始数据时没处理空格(比如"T "带空格导致显示异常),所以上面的代码里用了Trim()去除前后空格;
    • 赋值时列索引对应错误(比如把第0个分割值放到了第1列);
    • 数组第二维度长度是15,但初始数据只有12个值,剩余3列未设置默认值导致显示混乱。
  3. 调整布局生成逻辑:如果是xIndex=0时的生成代码有问题,直接修正赋值逻辑。比如如果目标是把初始数据填充到第0行,用上面的填充逻辑就能精准对应每个列的位置;如果有更复杂的布局规则(比如列合并、特殊占位符),可以针对性调整每个列的赋值逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:21:10