Ошибки в блоках 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 } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д