Попытка создать меню переключения - PullRequest
0 голосов
/ 25 апреля 2020

Итак, я работаю над меню Switch-Case для моей программы, но у меня несколько проблем (возможно, я здесь упускаю что-то действительно очевидное)

Итак, сначала я пытаюсь реализовать некоторое время l oop, чтобы можно было вернуться в меню после выполнения любого из методов case. Однако при попытке реализовать некоторое время l oop он почему-то не распознает мою переменную bool.

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

[код]

    private string[] säten = new string[24];
    private int Antal_passagerare = 0;
    public void Run()
    {
        bool continue = true;
        while(continue)
      {
        string menu = (Console.ReadLine());
        int tal = Convert.ToInt32(menu);
        switch(tal)
        {
            case 1:
                Add_passagerare;
                break;
            case 2:

                break;
            case 3:

                break;
        }
      }
    }

[/ code]

1 Ответ

1 голос
/ 25 апреля 2020

Ваша проблема заключается в том, что имя вашей локальной переменной конфликтует с ключевым словом * (или оператором) C# continue, который управляет потоком al oop (например, for, foreach, while и др. c). Другое ключевое слово потока управления - break.

. Вы должны переименовать локальную переменную. Но из-за ключевых слов управления потоком вы можете удалить локальную переменную (см. Ниже). Также используйте Int32.TryParse, чтобы избежать сбоя вашей программы, если пользователь вводит не числовое значение c. В этом контексте вы можете увидеть заявления continue и break на работе:

// Start an infinite loop. Use the break statement to leave it.
while (true)
{
  string userInput = Console.ReadLine();

  // Quit if user pressed 'q' or 'Q'
  if (userInput.Equals("Q", StringComparison.OrdinalIgnoreCase)
  {
    // Leave the infinite loop
    break;
  }

  // Check if input is valid e.g. numeric. 
  // If not show message and ask for new input
  if (!(int.TryParse(userInput, out int numericInput))
  {
    Console.WriteLine("Only numbers allowed. Press 'q' to exit.");

    // Skip remaining loop and continue from the beginning (ask for input)
    continue;
  }

  switch (numericInput)
  {
    case 1:
      break;
    case 2:
      Add_passagerare();
      break;
    case 3:

      break;
  }
}
...