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

调试获取数组中字符XY坐标的函数问题求助

问题分析与修复方案

我来帮你拆解下这个函数为啥没法正确定位字符,以及怎么解决:

核心问题

你的函数参数sym是string类型,但你在循环里拿char类型的line[i]和它做Equals比较——不同类型的对象用Equals永远匹配不上,所以不管你找什么字符,这个判断条件永远是false,循环会完整遍历所有行和列,最后返回数组的最大X、Y值,看起来就像“找不到任何字符”。

修复方案

这里提供几种修复方式,你可以根据需求选:

方案1:把参数改成char类型(最直接)

既然你要找的是单个字符,直接把参数类型换成char,这样就能直接用==比较,逻辑更清晰:

public Position getXY(char sym) { 
    int y = 0; 
    int x = 0; 
    var lines = _draw.GetBackground(); 
    foreach (string line in lines) { 
        x = 0; 
        for (int i = 0; i < line.Length; i++) { 
            if (line[i] == sym) goto End; 
            x++; 
        } 
        y++; 
    } 
End: 
    return new Position(x, y); 
}

方案2:保留string参数,但转成char再比较

如果必须用string参数(比如调用方只能传字符串),记得先把字符串转成单个char,同时加个参数校验避免异常:

public Position getXY(string sym) { 
    // 先校验参数,确保是单个字符的字符串
    if (string.IsNullOrEmpty(sym) || sym.Length != 1)
        throw new ArgumentException("sym必须是单个字符的字符串");
        
    char targetChar = sym[0];
    int y = 0; 
    int x = 0; 
    var lines = _draw.GetBackground(); 
    foreach (string line in lines) { 
        x = 0; 
        for (int i = 0; i < line.Length; i++) { 
            if (line[i] == targetChar) goto End; 
            x++; 
        } 
        y++; 
    } 
End: 
    return new Position(x, y); 
}

方案3:优化代码结构,去掉goto(更易读)

很多开发者不太喜欢用goto,可以改成提前return的写法,同时还能处理“找不到字符”的情况,避免返回最大坐标造成误解:

public Position getXY(char sym) { 
    var lines = _draw.GetBackground(); 
    // 用索引遍历,直接拿到y坐标
    for (int y = 0; y < lines.Count; y++) { 
        string line = lines[y];
        for (int x = 0; x < line.Length; x++) { 
            if (line[x] == sym) {
                // 找到就直接返回坐标
                return new Position(x, y);
            }
        } 
    } 
    // 没找到的话,返回一个明确的标记值,比如(-1,-1),或者抛出异常
    return new Position(-1, -1); 
    // 也可以抛出异常:throw new InvalidOperationException("未找到目标字符");
}

额外提示

之前的代码在找不到字符时会返回数组的最大X、Y值,很容易让你误以为“找到了”,建议修复后加上未找到的处理逻辑(比如返回特殊坐标或抛出异常),这样调试起来更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:34:23