2014-06-07 41 views
2

我剛開始學習如何使用C# 我全光照的Visual Studio 2013,我不知道C#的版本將程序使用「如果」給自定義錯誤消息在C#

在這裏,我有一個代碼,油漆命令申請的背景技術

 for (; ;) 
     { 
      Console.WriteLine("Give a number to select a colour between 0-15? "); 
      ConsoleColor renk; 
      renk = (ConsoleColor)Convert.ToInt32(Console.ReadLine()); 




      Console.BackgroundColor = renk; 
      Console.Clear(); 
     } 

問題是,當用戶給任何顏色,它繪製背景,並循環到起始,所以,用戶可以輸入新的一個(數)

BUT

當用戶只是不輸入數字,然後按回車,它只是給出了一個錯誤和崩潰。 如何顯示消息並將其循環到開始時,用戶不給號碼時?

我試過這個;

   if(renk) 
      { 

       Console.WriteLine("My error message!"); 

      } 

但我不知道如何定義「如果‘RENK’沒有定義」 一樣,如果我努力工作,這個代碼時「RENK」是然後我會寫;

  if(renk<5) 
      { 

       Console.WriteLine("My error message!"); 

      } 


     else 
      { 

       bla bla bla 

      } 
+0

你想要做的是使用['int.TryParse'](http://msdn.microsoft.com/en-us/library/f02979c7%28v=vs.110%29 .aspx),然後檢查是否成功確定是否輸出錯誤消息。 –

+0

當用戶不輸入數字或放入某個字符並輸入時,函數Convert.ToInt32無法將該值轉換爲數字並引發異常。處理異常。 – Guanxi

+0

您還需要包含範圍檢查(例如,輸入爲0-15)以確保只輸入有效數字。而FYI,Visual Studio 2013使用C#5.0和.NET 4.5。 –

回答

4

使用int.TryParse檢查字符串編號輸入。
只有輸入了一個數字(並且您將在num var中有數字),纔會輸入「if」。

for (; ;) 
{ 
     Console.WriteLine("Give a number to select a colour between 0-15? "); 
     ConsoleColor renk; 
     int num; 
     string strNum = Console.ReadLine(); 
     if(int.TryParse(strNum, out num) && (num >= 0 && num <= 15)) 
     { 
      Console.BackgroundColor = (ConsoleColor)num; 
      Console.Clear(); 
     } 
     else 
     { 
      Console.WriteLine("Error"); 
     } 
} 
+0

作爲編程新手(Berque Cemilian),我想讓你知道兩件重要的事情(關於這個答案)。首先,您會注意到此代碼將ReadLine()的值賦給變量,而不是直接將方法傳遞給'int.TryParse()'方法。這是有利的,因爲當您嘗試通過代碼進行調試時,您可以在值到達方法之前輕鬆調試該值。 –

+0

第二件事是,即使這給程序增加了另一個變量,那麼邏輯上認爲程序變得更大和/或使用更多內存,這很可能不是這種情況。編譯器將人類可讀代碼轉化爲計算機可讀代碼,這對優化變量非常有用。其結果是您擁有易於調試的代碼和易於維護的代碼。 –

0
int inputNumber = 0; 
for (; ;) 
{ 
    Console.WriteLine("Give a number to select a colour between 0-15? "); 
    ConsoleColor renk; 

    if(int.TryParse(Console.ReadLine(),out inputNumber) && (inputNumber>=0 && inputNumber<=15)) 
    { 
     renk = (ConsoleColor)Convert.ToInt32(inputNumber); 
     Console.BackgroundColor = renk; 
     Console.Clear(); 
    } 
    else 
    { 
     Console.WriteLine("No Input Received! Quitting!"); 
     break; 
    } 
} 
+0

如果輸入不是數字,這仍然會引發異常。它也不包括對輸入0-15的驗證。 –

+0

@JWLim:謝謝,我沒有想到文本輸入場景,現在編輯我的文章。 –