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

使用C# Windows Forms App开发圆周长面积计算器遇到报错问题

问题原因分析
  • 强类型语法适配问题:C#是强类型语言,txtRadius、txtCircumference、txtArea都是TextBox控件对象,不能直接参与数值计算,也不能直接接收数值类型的赋值。你需要通过控件的Text属性获取输入的字符串内容、输出结果字符串,且字符串和数值double类型之间必须做显式转换,这和你习惯的Python弱类型自动转换逻辑完全不同。
  • 计算公式逻辑颠倒:当前代码中给周长文本框txtCircumference赋值的是圆面积公式πr²,给面积文本框txtArea赋值的是圆周长公式2πr,和需求完全相反。
  • 缺少输入合法性校验:如果用户输入非数字内容、空值或者负数半径,直接转换会触发运行时报错。
可行解决方案

修正后的完整代码如下:

using System;
using System.Windows.Forms;

namespace Circumference
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnCalculate_Click(object sender, EventArgs e)
        {
            // 校验输入是否为合法的正数半径
            if (double.TryParse(txtRadius.Text, out double radius) && radius > 0)
            {
                // 按正确公式计算
                double circumference = 2 * Math.PI * radius;
                double area = Math.PI * Math.Pow(radius, 2);
                
                // 结果转字符串赋值给文本框的Text属性,保留2位小数优化显示
                txtCircumference.Text = circumference.ToString("F2");
                txtArea.Text = area.ToString("F2");
            }
            else
            {
                // 输入不合法时提示用户
                MessageBox.Show("请输入有效的正数字作为半径!", "输入错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                // 清空错误输入和历史结果
                txtRadius.Clear();
                txtCircumference.Clear();
                txtArea.Clear();
                txtRadius.Focus();
            }
        }
    }
}

核心修改点说明

  • 用double.TryParse()方法把txtRadius.Text的输入字符串安全转换为double类型的半径数值,转换失败或者数值为非正数时直接触发错误提示,避免运行崩溃。
  • 修正了周长和面积的计算公式逻辑,确保计算结果正确。
  • 计算得到的数值结果调用ToString("F2")转换为保留2位小数的字符串,赋值给对应文本框的Text属性完成输出。
  • 增加了输入错误的友好提示和后续交互逻辑,符合WinForm应用的常规交互规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:45:04