2013-05-02 20 views
0

所以我有點困惑如何做異常處理。我有這個菜單,我有5個選項,所以用戶輸入數字1-5。當用戶輸入大於5的字符串或數字時,我需要製作一個異常處理程序。任何提示?謝謝。異常處理C# - 如何只接受數字1-5,沒有字符串

+0

你用什麼控制輸入數字? – alexm 2013-05-02 21:53:35

+4

我想你可能想看看使用輸入驗證。這是Windows窗體,WPF,一個網站? – 2013-05-02 21:53:43

回答

0

不要使用Exception來處理代碼的流程,除非您希望突然停止當前流並與上層進行通信您的代碼需要通過調用代碼解決'特殊'情況。

在你的情況下,一個簡單的Int32.TryParse將解決你的問題。 假設你的應用程序是一個控制檯應用程序,你可以編寫這樣的事情

public static void Main(string[] args) 
{ 
    DisplayMenu(); 
    while(true) 
    { 
     int menuChoice; 
     string userInput = Console.Readline(); 
     if(Int32.TryParse(userInput, out menuChoice)) 
     { 
      if(menuChoice >= 1 && menuChoice <= 5) 
       RunCommand(menuChoice); 
      else 
       Console.WriteLine("Enter a number between 1-5"); 
     } 
     else 
      Console.WriteLine("A number between 1-5 is required!"); 

    } 

} 
2

這不是您應該使用例外情況的類型。只要使用if語句,並且告訴用戶再次嘗試

int num; 
if(int.TryParse(userInput, out num) == false || num> 5 || num< 1) 
{ 
    ShowError("don't do that"); 
} 
+0

提供一個檢查'if(!int.TryParse(...))',並且你已經得到了最好的答案。 – IAbstract 2013-05-02 22:05:53

+0

@IAbstract編輯 – 2013-05-02 22:15:00

0

要做到這一點是有一個while循環,直到用戶輸入正確的價值觀的方式。

只是一個簡單的例子。這是假設你正在談論的菜單是一個控制檯菜單。

int userInput = -1; 
    while (true){ 
     Console.WriteLine("Input value:"); 
     try{ 
     userInput = Int.Parse(Console.ReadLine()); 
     if (userInput <1 || userInput >5){ 
      throw new Exception(); 
     } 
     } 
     catch{ 
     Console.WriteLine("Invalid input"); 
     continue; 
     } 
     break; 
    } 
1

我不會使用異常處理來做到這一點。這聽起來更像是一個驗證的事情。如果這是針對網絡的,請查看RangeValidator。如果你真的想拋出一個異常,那麼你可以做這樣的事情:

if(myValue < 1 || myValue > 5) 
{ 
    Throw new System.Exception("Out of range!"); 
} 
+0

+1建議不要使用異常處理。 – IAbstract 2013-05-02 22:04:26

0

如果你真的需要,你可以使用正則表達式來驗證輸入。我不會拋出異常,因爲這不是異常處理的目的

0

使用正則表達式: 正則表達式類(System.Text.RegularExpressions)

Regex regex = new Regex(@"^[1-5]*$"); 

if (regex.IsMatch(compare)) 
{ 
    //true 
} 
else 
MessageBox.Show("ERROR"); 
+0

對不起,沒有注意到。更新 – 2013-05-03 09:49:51

+0

它現在接受空字符串和數字,如「55」。 – 2013-05-03 09:53:51

相關問題