【问题标题】:C# Temperature Conversion FormC#温度转换表
【发布时间】:2015-12-07 05:58:52
【问题描述】:

我要为我所在的学校课程提交此表格。我在运行该程序时遇到了问题。以下是要求:

  • 当用户点击按钮进行转换时,第一步是验证用户在文本框中的输入。任何实数都是可以接受的。如果文本框中的用户输入不是实数,则在结果输出标签中显示适当的消息,如下所示。 “错误:请输入要转换的数字温度。”

  • 如果用户输入的是实数,则存储它,然后根据选中的“转换为”单选按钮计算转换后的温度值。然后在输出标签中显示结果。按照此示例获取适当的格式: “72.4 华氏度转换为 22.44 摄氏度。”

  • 当用户单击按钮清除时,表单应重置为其默认状态,准备好输入。提示:除了清除输入文本框和结果输出标签之外,可能还有其他事情要做。

  • 当用户点击按钮退出时,表单应该关闭,程序结束

这是我的代码:

namespace TemperatureConversionForm
{
    public partial class frmTemperatureConverter : Form
    {
        public frmTemperatureConverter()
        {
            InitializeComponent();
        }

        private void btnConvert_Click(object sender, EventArgs e)
        {
            double tempurature;
            double celsius;
            double fahrenheit;

            if (!double.TryParse(txtInput.Text, out tempurature) == false )
            {
                MessageBox.Show("ERROR: Please enter a numeric temperature to convert");
                txtInput.ResetText();
                txtInput.Focus();
            }

            if (rdoCelsius.Checked == true)
            {
                celsius = double.Parse(txtInput.Text);
                celsius = (5.0 / 9.0 * (txtInput - 32));
                lblConversion.Text = celsius.ToString();
            }
            else if (rdoFahrenheit.Checked == true)
            {
                fahrenheit = double.Parse(txtInput.Text);
                fahrenheit = (txtInput * 9.0 / 5.0 + 32);
                lblConversion.Text = fahrenheit.ToString();
            }
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            txtInput.ResetText();
            lblConversion.ResetText();

            txtInput.Focus();
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

我收到 2 个错误:

代码说明

CS0019 运算符“-”不能应用于“TextBox”和“Int”类型的操作数

CS0019 运算符“*”不能应用于“TextBox”和“double”类型的操作数

【问题讨论】:

  • 这一行:if (!double.TryParse(txtInput.Text, out tempurature) == false ) 对我来说看起来很矛盾,我会删除 ==false!

标签: c#


【解决方案1】:

正如编译器告诉您的那样,您正在尝试对 TextBox 对象执行数学运算:

txtInput - 32

您可能打算对从 TextBox 解析的 执行数学运算:

celsius = (5.0 / 9.0 * (celsius - 32));

和:

fahrenheit = (fahrenheit * 9.0 / 5.0 + 32);

基本上,TextBox 是一个对象,而不是一个值。它具有属性和功能以及对象所具有的各种东西。虽然您可能倾向于在概念上将其视为代表它所拥有的价值,但语言需要您比这更具体。您可以在此处从TextBox 获取值:

celsius = double.Parse(txtInput.Text);

然后您需要对该值本身执行计算,而不是对它所来自的 TextBox 对象执行计算。

【讨论】:

  • 感谢您的回复。这摆脱了我的错误。虽然我的代码没有按照它应该在表单中的方式执行。我的 if else if 语句是否正确?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
相关资源
最近更新 更多