2015-11-27 2 views
0

Я не уверен, как это объяснить, но я постараюсь изо всех сил, так как я новичок в программировании на C#.C# Menu System не работает

Я создал меню System

string sChoice; 
      //Menu 
      Console.WriteLine("1 - Instructions"); 
      Console.WriteLine("2 - New User"); 
      Console.WriteLine("3 - Record & Score"); 
      Console.WriteLine("4 - Exit System"); 
      Console.Write("Please enter your choice between 1-4: "); 
      sChoice = Console.ReadLine(); 

Нажатие 1 будет принимать вас в разделе инструкции консольного приложения и так далее.

//Instructions 
      if (sChoice == "1") 

      { 
       Console.WriteLine(); 
       Console.WriteLine("*Instructions*"); 
       Console.WriteLine(); 

Я попробовал еще заявление, которое будет повторяться меню и запрашивать у пользователя недействительного ключа, однако это будет только повторяться еще 3 раза перед закрытием. Есть ли способ заблокировать любые другие ключи, кроме 1-4, которые будут введены или решение моей проблемы

Поскольку, как кажется, если нажата клавиша, отличная от 1-4, консольное приложение просто закроется ,

+0

Side Примечание: Посмотрите на 'switch' заявление, что лучше всего подходит для вашего типа программы –

+0

Ваша проблема заключается в том, что ваши знания программирования слишком ограничены и вы не знаете, как справиться с простой проблемой. Вы не должны спрашивать об этой проблеме и серьезно думать, что ответ поможет вам учиться (потому что после этого появится новый, а затем новый). Теперь вы должны сосредоточиться на изучении основ и проведении большого количества тестов (по своему усмотрению, в идеале без запроса). Как только вы получите правильное понимание (даже не C#, основного построения алгоритма), вы можете прийти сюда и задать действительно актуальные вопросы. – varocarbas

+0

@PoolPartyRenekton Если кто-то жалуется на набор инструкций if else, которые не обеспечивают ожидаемого, вы не должны рекомендовать коммутатор, который делает то же самое (хотя некоторые люди могут предпочесть один или другой вариант). – varocarbas

ответ

4

Этот вопрос запоминает меня, когда я был молодым, и начал программировать.

Может быть, вы хотите коснуться, как это:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      while (true) 
      { 
       int mainMenuOption = OptionMenu("Instructions", "New User", "Record & Score", "Exit System"); 
       switch (mainMenuOption) 
       { 
        case 1: Instructions(); break; 
        case 2: NewUser(); break; 
        case 3: RecordAndScore(); break; 
        case 4: Console.WriteLine("Goodbye.."); return; 
       } 
      } 

     } 

     static void Instructions() 
     { 
      // Handle Instructions here 
      Console.WriteLine("Instrucctions done"); 
     } 

     static void NewUser() 
     { 
      // Handle New User here 
      Console.WriteLine("New user done"); 
     } 

     static void RecordAndScore() 
     { 
      // handle recorde and score here 
      Console.WriteLine("Record & score done"); 
     } 


     static int OptionMenu(params string[] optionLabels) 
     { 
      Console.WriteLine("Please Choose an option"); 
      for (int optionIndex = 0; optionIndex < optionLabels.Length; optionIndex++) 
      { 
       Console.Write(optionIndex + 1); 
       Console.Write(".- "); 
       Console.WriteLine(optionLabels[optionIndex]); 
      } 
      while (true) 
      { 
       var input = Console.ReadLine(); 
       int selectedOption; 
       if (int.TryParse(input, out selectedOption) && selectedOption > 0 && selectedOption <= optionLabels.Length) 
       { 
        return selectedOption; 
       } 
       else 
       { 
        Console.WriteLine("Invalid option, please try again"); 
       } 
      } 
     } 
    } 
} 
+0

довольно круто ответ! Хорошая работа jesus! –

Смежные вопросы