Ошибки в блоках 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
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы