2011-10-13 43 views
2

我有以下代碼:驗證用戶輸入的C#(控制檯)

aVariable = int.Parse(Console.ReadLine()); 

一個問題我已經是我無法找到任何支持材料,以幫助驗證用戶的輸入,例如,如果用戶按下字母a ,這隻會殺死程序。

我該怎麼辦?我在哪裏可以找到一個體面的教程?

+1

你可以使用TryParse作爲這個..只是谷歌這種方法。或者你可以趕上例外,以防止你的程序崩潰 – Rob

+0

@Rob你應該回答與您的評論的問題。你是對的。 –

+0

很多憤怒的今天,所以我嘗試了第一次評論之前得到-100票lol – Rob

回答

2

int.Parse在無法解析字符串時拋出FormatException。您可以捕獲此異常並處理它,例如顯示錯誤消息。

的另一種方法是使用的TryParse:

int number = 0; 
bool result = Int32.TryParse(value, out number); 
if (result) 
{ 
    Console.WriteLine("Converted '{0}' to {1}.", value, number);   
} 
5

而不是使用Parse方法使用TryParse來代替。

int age; 

bool isValidInt = int.TryParse(Console.ReadLine(), out age); 
3

您可以使用TryParse作爲此..只是谷歌這種方法。或者你可以趕上例外,以防止你的程序崩潰

1

改爲使用Int32.TryParse並測試成功的演員。

Int32 val; 
if (Int32.TryParse(userInput, out val)) 
{ 
    // val is now the user input as an integer 
} 
else 
{ 
    // bad user input 
} 
2

驗證用戶輸入是一個控制檯應用程序沒有不同於它是在一個Winforms應用程序。這與驗證ASP.NET應用程序中的用戶輸入非常相似,只是您沒有很好的驗證控件。

如果您來自ASP.NET背景,請查看人們使用CustomValidators的方式 - 注意代碼隱藏並忽略客戶端驗證。

此外,您可以像使用ASP.NET應用程序一樣輕鬆地在控制檯應用程序中使用RegularExpressions。

控制檯應用程序未特別提及驗證的原因可能是驗證輸入是驗證輸入。這些方法幾乎無處不在。與ASP.NET相比,唯一的區別是自定義控件的存在可以幫助您做到這一點。

+1

注意:我故意沒有回答使用TryParse,因爲它只回答他的具體例子,現在如何驗證一般的控制檯應用程序。 – David

+0

更不用說,如何驗證一個數是否是一個整數之前已經得到了回答。 http://stackoverflow.com/questions/5395630/how-to-validate-user-input-for-whether-its-an-integer – David