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

无法从自定义Scoreboard类打印foreach循环值,输出为空字符串

问题分析与解决方案

我来帮你看看这个Unity开发里的问题!你的代码里有几个关键逻辑错误,导致最后输出的realData是空字符串,咱们一步步拆解:

核心问题点

  • foreach循环的赋值逻辑错误:你在MakeBR方法里的foreach循环中,每次都把realData直接赋值为当前的newData,这意味着循环结束后,realData只会保留数组的最后一个元素。而你的BigRD最后拼接了一个额外的逗号,用Split(',')拆分后,最后一个元素是空字符串,所以最终realData就成了空。
  • 字符串拼接的冗余逗号:你在循环里给BigRD追加strData[i]后又加了逗号,导致最终的字符串末尾多了一个逗号,拆分后必然会产生一个空元素。
  • 未处理原始字符串的空格:你的strData里的元素是"P ,B ,B ..."这种带空格的格式,拆分后每个项都会带空格,可能不是你想要的结果。

修正后的代码

CustomClass.cs

public string[,] tableBR;
// 先去掉原始字符串里的空格,避免后续处理麻烦
string[] strData = {"P,B,B,P,B,B,B,B,B,B,P,P,B,P"};
public int X_LENGTH = 104;
public int Y_LENGTH = 15;

#region BR VARIABLES
string BigRD = "";
string[] newBigRD;
// 初始化realData避免空引用
string realData = "";
#endregion

public Scoreboard(){
    tableBR = new string[X_LENGTH,Y_LENGTH];
}

public void MakeBR(string data){
    BigRD = data;
    // 拼接strData里的所有元素,用逗号分隔(避免末尾多逗号)
    foreach(string item in strData){
        if(!string.IsNullOrEmpty(BigRD)){
            BigRD += ",";
        }
        BigRD += item;
    }
    // 拆分字符串
    newBigRD = BigRD.Split(',');
    // 拼接所有非空的项到realData(如果需要保留所有数据)
    realData = "";
    foreach(string newData in newBigRD){
        // 跳过空项,同时Trim掉可能的空格
        string trimmedData = newData.Trim();
        if(!string.IsNullOrEmpty(trimmedData)){
            if(!string.IsNullOrEmpty(realData)){
                realData += ", ";
            }
            realData += trimmedData;
        }
    }
}

public string ShowBigRD(){
    return realData;
}

public override string ToString(){
    return "this are all the data :" + realData;
}

MainClass.cs

string BigRD = "";
void Start(){
    StartCoroutine(Win_Log());
}

IEnumerator Win_Log(){
    Scoreboard scoreBoard = new Scoreboard();
    scoreBoard.MakeBR(BigRD);
    Debug.Log("This is the data : " + scoreBoard.ShowBigRD());
    Debug.Log(scoreBoard.ToString());
    yield return new WaitForEndOfFrame();
}

关键改动说明

  1. 修正foreach赋值逻辑:把realData = newData改成拼接逻辑,同时过滤空项和多余空格,确保最终的realData是所有有效数据的组合。
  2. 优化字符串拼接:避免在循环末尾添加多余的逗号,改用判断逻辑来添加分隔符,减少空元素的产生。
  3. 处理原始字符串空格:提前把strData里的空格去掉,或者在拆分后用Trim()清理,保证数据整洁。
  4. 初始化变量:给realData初始化为空字符串,避免潜在的空引用问题。

现在运行代码,你应该能看到完整的有效数据输出了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:21:28