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

Visual Studio 2017数学游戏程序Start按钮异常及代码修改求助

解决System.FormatException:输入字符串格式不正确的问题

这个System.FormatException通常是因为你尝试把非数值格式的字符串转换成整数/浮点数时触发的——比如输入框里是空的、有字母、中文符号,或者空格没处理干净,导致Parse方法无法解析。下面是具体的解决步骤和修改方案:

1. 定位出错代码

先找到你处理p、q、r输入转换的代码段,大概率是用了int.Parse()或者double.Parse()这类方法,比如:

// 错误示例:直接Parse,没有验证输入合法性
int p = int.Parse(txtP.Text);
int q = int.Parse(txtQ.Text);
int r = int.Parse(txtR.Text);

当输入框内容不是合法数值时,这段代码就会抛出你遇到的异常。

2. 替换为安全的TryParse方法

用TryParse替代Parse,它不会直接抛出异常,而是返回一个布尔值告诉你转换是否成功,同时通过out参数返回转换后的数值。修改后的代码示例:

private void btnStart_Click(object sender, EventArgs e)
{
    int p, q, r;
    
    // 验证并转换p的输入
    if (!int.TryParse(txtP.Text.Trim(), out p))
    {
        MessageBox.Show("请输入有效的整数p,不能包含非数字字符或为空!");
        txtP.Focus(); // 让光标回到出错的输入框,方便用户修改
        return; // 终止后续代码执行
    }
    
    // 同理验证q
    if (!int.TryParse(txtQ.Text.Trim(), out q))
    {
        MessageBox.Show("请输入有效的整数q,不能包含非数字字符或为空!");
        txtQ.Focus();
        return;
    }
    
    // 同理验证r
    if (!int.TryParse(txtR.Text.Trim(), out r))
    {
        MessageBox.Show("请输入有效的整数r,不能包含非数字字符或为空!");
        txtR.Focus();
        return;
    }
    
    // 到这里,p、q、r都是合法的整数了,放心执行你的游戏逻辑
    // 比如:
    RunMathGame(p, q, r);
}

如果你的p、q、r是浮点数(比如小数),只需要把int换成double,int.TryParse换成double.TryParse即可。

3. 额外的输入防护(可选)

为了从源头减少错误,你可以给输入框添加输入限制:

  • 设置文本框的KeyPress事件,只允许输入数字、退格键(如果是整数),或者加上小数点(如果是浮点数):
private void txtP_KeyPress(object sender, KeyPressEventArgs e)
{
    // 只允许输入数字和退格键
    if (!char.IsDigit(e.KeyChar) && e.KeyChar != '\b')
    {
        e.Handled = true; // 阻止输入非数字字符
    }
}

4. 调试小技巧

如果还是不确定问题出在哪,可以在转换前加个断点,查看txtP.Text、txtQ.Text、txtR.Text的实际内容——有时候输入框里会有看不见的空格、换行符,或者用户不小心输入了中文逗号/句号,这些都会导致转换失败。用.Trim()方法可以去掉字符串前后的空白字符,避免这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:10:19