C#开发战舰游戏时传入坐标(0,0)函数返回异常值求助
战舰游戏坐标转换问题解决
问题根源
- 直接把
char强转成int,得到的是该字符的ASCII码值,'0'的ASCII码就是48,这就是你看到返回48的原因。 - 代码存在语法错误:C#里数组初始化必须用大括号
{},你写的小括号()会导致编译失败。 - 坐标字符串"0,0"的索引对应关系:
coordinate[0]是第一个'0',coordinate[1]是逗号',',coordinate[2]是第二个'0',你当前的索引逻辑可能也和你想要的YX对应关系不匹配。
修正方案
方案1:用Split拆分字符串(支持多位数坐标)
public static int[] GetYXCoordinate(string coordinate) { var coords = coordinate.Split(','); // 按需求调整X/Y的顺序,这里假设输入是"X,Y",要返回[Y,X] int y = int.Parse(coords[1]); int x = int.Parse(coords[0]); return new int[] { y, x }; }
方案2:直接操作字符(仅适用于单个数字的坐标)
public static int[] GetYXCoordinate(string coordinate) { // 字符转数字:用当前字符减去'0'的ASCII码,得到对应整数 int y = coordinate[2] - '0'; int x = coordinate[0] - '0'; return new int[] { y, x }; }
补充说明
- 两种方案都能把字符形式的数字转为真正的整数,方案1更灵活,适合以后扩展多位数坐标的情况;方案2更简洁,仅限单个数字的场景。
- 记得根据你的实际需求调整X和Y的顺序,确保返回的数组符合战舰游戏的坐标逻辑。
内容的提问来源于stack exchange,提问作者PrestonJ
相关产品推荐
相关产品推荐

