Unity中C#多维数组按列区分统计TIE值的问题
解决Unity C#多维数组中各列Player/Banker的TIE统计问题
首先得指出你原来统计逻辑里的关键错误:你写的result.Equals("T") && result.Equals("P")永远不可能成立——一个字符串怎么可能同时等于"T"和"P"呢?这就是你的统计完全无效的核心原因。
结合你描述的场景(Player蓝色列、Banker红色列的TIE统计需求),我理解你的需求是:每一列属于Player或Banker序列(比如列的起始元素是P/B),需要统计每列内的T数量,再分别汇总所有Player列和Banker列的T总数。下面是具体的实现方案:
正确的统计实现代码
我们可以通过遍历数组的每一列,先确定列的归属(P/B),再统计该列内的T数量:
// 定义总计数器,分别统计Player和Banker列的TIE总数 int totalPlayerTies = 0; int totalBankerTies = 0; // 获取数组的列数和行数 int columnCount = table.GetLength(1); int rowCount = table.GetLength(0); // 遍历每一列 for (int col = 0; col < columnCount; col++) { string columnCategory = null; // 标记当前列是P还是B int tieCountInCurrentCol = 0; // 当前列的T数量 // 遍历当前列的每一行 for (int row = 0; row < rowCount; row++) { string cellValue = table[row, col]; // 跳过空单元格,避免干扰统计 if (string.IsNullOrEmpty(cellValue)) continue; if (cellValue == "T") { // 遇到T,累加当前列的T计数 tieCountInCurrentCol++; } else if (columnCategory == null) { // 还没确定列归属,且当前单元格不是T,标记列的类型 columnCategory = cellValue; } } // 根据列归属,把当前列的T数量累加到总计数器 if (columnCategory == "P") { totalPlayerTies += tieCountInCurrentCol; Debug.Log($"第{col+1}列(Player列)的TIE数量:{tieCountInCurrentCol}"); } else if (columnCategory == "B") { totalBankerTies += tieCountInCurrentCol; Debug.Log($"第{col+1}列(Banker列)的TIE数量:{tieCountInCurrentCol}"); } } // 输出最终汇总结果 Debug.Log($"所有Player列的TIE总数:{totalPlayerTies}"); Debug.Log($"所有Banker列的TIE总数:{totalBankerTies}");
代码说明
- 修正核心逻辑:不再试图让一个值同时等于T和P/B,而是把T归属于它所在的列,先确定列的类型,再统计列内的T数量。
- 列归属判断:这里默认取列中第一个非T的有效元素作为列的类型(P/B),如果你的列归属规则不同(比如列的第一个元素必然是P/B),可以直接修改
columnCategory的赋值逻辑,比如改成columnCategory = table[0, col];。 - 空单元格处理:跳过空字符串的单元格,避免因为数组未填满而导致统计错误。
针对你原数组填充代码的小建议
你原有的数组填充逻辑有点复杂,容易出错。如果可能的话,可以考虑把填充逻辑拆分成更小的函数,比如单独处理字符串分割、单独处理行/列的赋值,这样后续维护和排查问题会更方便。
内容的提问来源于stack exchange,提问作者Ginxxx
相关产品推荐
相关产品推荐

