2015-11-27 64 views
0

我不知道該如何解釋這一點,但因爲我是新的C#編程,我會盡我所能。C#菜單系統將無法正常工作

我創建了一個菜單系統

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(); 

我已經試過了else語句將重複菜單,並提示無效鍵的用戶,但是這隻會關閉之前重演另3倍。有沒有我擋住比1-4以外的任何其他按鍵被輸入的方式或以我的問題的解決方案

因爲它看來,如果按下任意鍵以外的1-4則控制檯應用程序將簡單地關閉。

+0

側面說明:看看了'之開關聲明,這是更適合你的類型的程序 –

+0

您的問題是你的編程知識太有限,你不知道如何面對一個簡單的問題。你不應該問這個問題,並認真考慮一個答案會幫助你學習(因爲在這之後,會有一個新的,然後是新的)。你現在應該把重點放在學習基礎知識上,並且做大量的測試(由你自己完成,最好不要問)。一旦你得到一個正確的理解(甚至不是C#,基本算法的構建),你可能會來這裏並且詢問實際相關的問題。 – varocarbas

+0

@PoolPartyRenekton如果有人抱怨一組如果沒有提供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

很酷回答!好耶穌! –