калькулятор температуры - PullRequest
0 голосов
/ 08 ноября 2011

Привет, я должен создать калькулятор температуры, который будет принимать градусы Цельсия или периметр и преобразовывать эту температуру в другую шкалу.Если введена температура в градусах Цельсия, она будет преобразована в градусы Фаренгейта и наоборот.

Инструкции:

Для этого вам потребуется разработать и кодировать метод преобразования одной температурной шкалы вдругой и вернуть результат.Этот единственный метод должен принимать два аргумента: один для значения температуры, которое нужно преобразовать, и второй, указывающий, к какой шкале температуры нужно преобразовать.

Ваш метод должен быть закодирован так, чтобы к нему мог обращаться другой класс или приложение.Кроме того, убедитесь, что в вашем методе есть только одна инструкция возврата.

Пока что я создал этот код, но он показывает мне две небольшие ошибки, и я не знаю, как их исправить.

** ошибка 1. Значение константы '67' не может быть преобразовано в 'char'

ошибка 2. Значение константы '70' не может быть преобразовано в 'char' **

namespace Lab7 {открытый частичный класс frmTemperaConverter: Form {public frmTemperaConverter () {InitializeComponent ();}

    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();
    }
}

}

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Проблема в том, что 67 и 70 не являются символами - они являются целыми числами.

Самое простое - сделать переменную "chr" целым числом.Тогда вам, вероятно, следует также изменить его имя - возможно, на «toScale» - то же самое, что и имя параметра.

Или вы можете оставить переменную «chr» в качестве символа и использовать значения «C»вместо 67 и 'F' вместо 70. Этот метод также облегчает понимание программы.

0 голосов
/ 08 ноября 2011

Проблема в том, что строки:

char chr;  
chr = 67;  
chr = 70;  

chr ist типа char, поэтому вам нужно привести это число к типу char:

chr = (char)67;  
...