【问题标题】:temperature calculator温度计算器
【发布时间】:2015-07-18 14:44:48
【问题描述】:

您好,我想制作一个温度计算器,它可以接受摄氏温度或周长,并将该温度转换为其他刻度。如果输入摄氏温度,它将转换为华氏温度,反之亦然。

说明:

为此,您必须设计和编写一种方法来将一种温标转换为另一种温标并返回结果。这个单一的方法应该有两个参数,一个是要转换的温度值,第二个是要转换成哪个温标。

应该对您的方法进行编码,以便其他类或应用程序可以访问它。另外,请确保您的方法中只有一个 return 语句。

到目前为止,我已经创建了这段代码,但它显示了 2 个小错误,我不知道如何修复它们。

**错误1.常量值'67'不能转换为'char'

错误2.常量值'70'不能转换为'char'**

命名空间 Lab7 { 公共部分类 frmTemperatureConverter :表格 { 公共 frmTemperatureConverter() { 初始化组件(); }

    private void txtValueToConver_TextChanged(object sender, EventArgs e)
    {

    }

    private void btnConvert_Click(object sender, EventArgs e)
    {
        char chr;
        string str1;
        string str2;
        object[] objArray;
        if (this.txtConvert.Text != "")
        {
            double num1 = double.Parse(this.txtConvert.Text);
            if (this.radCelsius.Checked)
            {
                chr = 67;
                str1 = "farenheit";
                str2 = "celsius";
            }
            else
            {
                chr = 70;
                str1 = "celsius";
                str2 = "farenheit";
            }
            double num2 = Math.Round(this.ConvertTemperature(num1, chr), 2);
            this.lblResult.Text = string.Concat(new object[] { num1, " ", str1, " converts to ", num2, " ", str2 });
        }
        else
        {
            this.lblResult.Text = "Please enter a numeric temperature to convert.";
            this.txtConvert.Focus();
        }
    }

    public double ConvertTemperature(double inTemp, char toScale)
    {
        double num;
        if (toScale == 70)
        {
            num = inTemp * 1.80 + 32.00;
        }
        else
        {
            if (toScale == 67)
            {
                num = (inTemp - 32.00) / 1.80;
            }
            else
            {
                num = inTemp;
            }
        }
        return num;
    }

    private void btnClear_Click(object sender, EventArgs e)
    {
        this.txtConvert.Text = "";
        this.lblResult.Text = "";
        this.txtConvert.Focus();
        this.radCelsius.Checked = true;
    }

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

}

【问题讨论】:

    标签: calculator temperature


    【解决方案1】:

    问题在于 67 和 70 不是字符——它们是整数。

    最简单的方法是将变量“chr”设为整数。那么你可能也应该改变它的名字——也许是“toScale”——和参数名一样。

    或者您可以将变量“chr”保留为 char,并使用值“C”而不是 67 和值“F”而不是 70。这种方法也更容易理解程序。

    【讨论】:

      【解决方案2】:

      问题出在以下几行:

      char chr;  
      chr = 67;  
      chr = 70;  
      

      char 类型的 chr 列表,所以你需要将此数字转换为 char:

      chr = (char)67;  
      

      【讨论】:

      • 谢谢这解决了问题,但我有一个小错误,它说“变量'objArray'已声明但从未使用过。我应该删除“object[] objArray;”这一行吗?跨度>
      • 当然,如果你不需要数组
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 2015-05-17
      相关资源
      最近更新 更多