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

C#中如何将传感器坐标组合为指定格式变量并解决格式异常

问题分析

你遇到的FormatException是因为int.Parse只能解析纯数字字符串,而"3,1"这种带逗号的格式不是合法整数,所以解析失败。

正确实现方式

根据实际需求,有几种不同的解决方案:

1. 仅需字符串格式(用于调试/展示)

如果只是要得到"X,Y"格式的字符串用于输出或存储,直接赋值字符串即可,不需要转成int:

// 用字符串插值更简洁易读
string debugVariable = $"{(int)IdkRightSensor.X},{(int)IdkRightSensor.Y}";
string debugVariable2 = $"{(int)IdkLeftSensor.X},{(int)IdkLeftSensor.Y}";

2. 需要保留数值可操作性

如果后续还要对X、Y坐标进行计算,不要用字符串存储,推荐用元组或自定义结构体:

元组方式(快速实现)

// 定义带命名的元组,直接存储X、Y数值
(int X, int Y) debugVariable = ((int)IdkRightSensor.X, (int)IdkRightSensor.Y);
(int X, int Y) debugVariable2 = ((int)IdkLeftSensor.X, (int)IdkLeftSensor.Y);

// 后续使用数值:debugVariable.X、debugVariable.Y
// 需要输出字符串格式时:
string coordStr = $"{debugVariable.X},{debugVariable.Y}";

自定义结构体(规范场景)

如果需要更多扩展功能(比如重写ToString、添加验证逻辑),可以定义结构体:

public struct SensorCoordinate
{
    public int X { get; set; }
    public int Y { get; set; }

    // 自动返回"X,Y"格式的字符串
    public override string ToString()
    {
        return $"{X},{Y}";
    }
}

// 使用示例
SensorCoordinate debugVariable = new SensorCoordinate
{
    X = (int)IdkRightSensor.X,
    Y = (int)IdkRightSensor.Y
};

// 直接输出就会得到"3,1"格式
Console.WriteLine(debugVariable);

3. 从"X,Y"字符串解析回数值(如果需要)

如果已经有了"3,1"格式的字符串,要拆分成X、Y整数,需要手动拆分后解析:

string coordStr = $"{(int)IdkRightSensor.X},{(int)IdkRightSensor.Y}";
string[] coordParts = coordStr.Split(',');

// 用TryParse避免格式错误导致崩溃
if (coordParts.Length == 2 
    && int.TryParse(coordParts[0], out int x) 
    && int.TryParse(coordParts[1], out int y))
{
    // 成功获取x和y,可在此处使用
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:49:52