Ошибки в блоках case "A constant value is expected" - C#
Формулировка задачи:
подскажите пожалуйста в чем ошибка?
Совсем недавно начал изучать С# и программирование в целом, вот вчера застрял на этом моменте: писал пару раз подглядывая в пример, в итоге ошибки в блоках case, "A constant value is expected" перевод на русский не прояснил голову)
class Program
{
static string GetSelection(string Print)
{
Console.WriteLine(Print);
string action = Console.ReadLine();
string GetAction = Convert.ToString(action);
return GetAction;
}
static double GetAction(string Print)
{
Console.WriteLine(Print);
string action = Console.ReadLine();
double GetAction = Convert.ToDouble(action);
return GetAction;
}
static void Main(string[] args)
{
string Ex_Action = "выход";
string Sum_Action = "сложение";
string Min_Action = "вычетание";
string Mul_Action = "умножение";
string Del_Action = "деление";
string action = " ";
string Hello = "Введите одну из команд: /n выход, сложение, вычетание, умножение, деление";
do
{
action = GetSelection(Hello);
if (action != Ex_Action)
{
switch (action)
{
case Del_Action:
{
double firstValue = GetAction("введите первое число");
double secondValue = GetAction("введите второе число");
double result = firstValue + secondValue;
Console.WriteLine("результат сложения = " + result);
}
break;
case Mul_Action:
{
double firstValue = GetAction("введите первое число");
double secondValue = GetAction("введите второе число");
double result = firstValue + secondValue;
Console.WriteLine("результат умножения = " + result);
}
break;
case Min_Action:
{
double firstValue = GetAction("введите первое число");
double secondValue = GetAction("введите второе число");
double result = firstValue + secondValue;
Console.WriteLine("результат вычитания = " + result);
}
break;
case Sum_Action:
{
double firstValue = GetAction("введите первое число");
double secondValue = GetAction("введите второе число");
double result = firstValue + secondValue;
Console.WriteLine("результат сложения = " + result);
}
default:
{
Console.WriteLine("введена неизвестная команда");
}
break;
}
}
} while (action != Ex_Action);
}
}Решение задачи: «Ошибки в блоках case "A constant value is expected"»
textual
Листинг программы
class Program
{
static string GetSelection(string Print) // создаем функцию принимающую нейкую строку и возвращающую то же строку
{
Console.WriteLine(Print);// выводим переданную строку на консоль
string action = Console.ReadLine();// СЧИТЫВАЕМ В СТРОКУ ответ пользователя
string GetAction = Convert.ToString(action);// КОНВЕРТИРУЕМ СТРОКУ В СТРОКУ ничего не смущает? нет? Ну ладно...
return GetAction;// возвращаем итоговую строку.
}
static double GetAction(string Print)// Создаем еще одну функцию принимающую строку возвращающее число двойной точности
{
Console.WriteLine(Print);//выводим переданную строку на консоль
string action = Console.ReadLine();// получаем строку ответ
double GetAction = Convert.ToDouble(action);// конвертируем в дабл
return GetAction;// возвращаем дабл
}
static void Main(string[] args)
{
string Ex_Action = "выход";// создаем и инициализируем строковую переменную
string Sum_Action = "сложение";// создаем и инициализируем строковую переменную
string Min_Action = "вычитание";// создаем и инициализируем строковую переменную
string Mul_Action = "умножение";// создаем и инициализируем строковую переменную
string Del_Action = "деление";// создаем и инициализируем строковую переменную
// и все это для того что бы использовать там где переменные использовать нельзя
string action = " ";// создаем и инициализируем строковую переменную пробелом :)
string Hello = "Введите одну из команд: /n выход, сложение, вычитание, умножение, деление";
do// входим в цикл
{
action = GetSelection(Hello);// ПЕРЕСОЗДАЕМ строку с пробелом но в этот раз заносим в нее то, что вернет нам функция
if (action != Ex_Action)// ПРОВЕРЯЕМ ПОЛУЧЕННУЮ ИЗ ФУНКЦИИ СТРОКУ или она не равна значению переменной
{
switch (action)// СНОВА ПРОВЕРЯЕМ ТУ ЖЕ СТРОКУ на то что она содержит
{
case Del_Action: // если строка содержит... здесь все и посыпалось, потому как кейс с переменными не работает... ну допустим что это у нас константа "деление" и идем дальше
{
double firstValue = GetAction("введите первое число");// из функции получаем первое число
double secondValue = GetAction("введите второе число");// из функции получаем второе число
double result = firstValue + secondValue;// складываем оба полученных значения (ну да при делении самое оно)
Console.WriteLine("результат сложения = " + result);// честно пишем что мы сложили числа которые просили разделить и выводим сумму
}
break; //выходим из кейса
case Mul_Action:// все то же самое для умножения
{
double firstValue = GetAction("введите первое число");
double secondValue = GetAction("введите второе число");
double result = firstValue + secondValue;
Console.WriteLine("результат умножения = " + result);// правда теперь мы сообщаем что выполнили то что от нас просили, но вместо умножения возвращаем сумму
}
break;
case Min_Action:// снова здорова
{
double firstValue = GetAction("введите первое число");
double secondValue = GetAction("введите второе число");
double result = firstValue + secondValue;
Console.WriteLine("результат вычитания = " + result);// результатом вычитания у нас опять таки служит сумма
}
break;
case Sum_Action://снова переменная вместо константы
{
double firstValue = GetAction("введите первое число");
double secondValue = GetAction("введите второе число");
double result = firstValue + secondValue;
Console.WriteLine("результат сложения = " + result);// ну и наконец мы выводим именно то что от нас просили
}
default:// ну и к дефаулту вопросов не имеем:)
{
Console.WriteLine("введена неизвестная команда");
}
break;
}
}
} while (action != Ex_Action);// и уже в третий раз проверяем значение action
}
}