#calculator #temperature
#калькулятор #температура
Вопрос:
Привет, я предполагаю создать калькулятор температуры, который будет принимать значения по Цельсию или периметру и преобразовывать эту температуру в другую шкалу. Если ввести температуру по Цельсию, она будет преобразована в градусы Фаренгейта и наоборот.
Инструкции:
Для этого вам придется разработать и закодировать метод преобразования одной температурной шкалы в другую и возврата результата. Этот единственный метод должен принимать два аргумента: один для значения температуры для преобразования, а второй указывает, в какую температурную шкалу преобразовать.
Ваш метод должен быть закодирован так, чтобы к нему мог получить доступ другой класс или приложение. Кроме того, убедитесь, что в вашем методе есть только один оператор return.
На данный момент я создал этот код, но он показывает мне 2 небольшие ошибки, и я не знаю, как их исправить.
** ошибка 1. Постоянное значение ’67’ не может быть преобразовано в ‘char’
ошибка 2. Постоянное значение ’70’ не может быть преобразовано в ‘char’**
пространство имен Lab7 { общедоступный частичный класс frmTemperatureConverter : Form { общедоступный frmTemperatureConverter() { 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();
}
}
}
Ответ №1:
Проблема в том, что 67 и 70 не являются символами — это целые числа.
Проще всего было бы сделать переменную «chr» целым числом. Тогда вам, вероятно, следует также изменить его название — возможно, на «toScale» — такое же, как имя параметра.
Или вы могли бы оставить переменную «chr» в качестве символа и использовать значения «C» вместо 67 и «F» вместо 70. Этот метод также упрощает понимание программы.
Ответ №2:
Проблема в этих строках:
char chr;
chr = 67;
chr = 70;
chr имеет тип char, поэтому вам нужно преобразовать это число в char:
chr = (char)67;
Комментарии:
1. спасибо, что решил проблему, но у меня небольшая ошибка, в ней говорится, что «переменная ‘objArray’ объявлена, но никогда не использовалась. Должен ли я просто удалить строку «object[] objArray;»?
2. конечно, если вам не нужен массив