2015-09-25 30 views
-3

所以我試着去簡單地檢查我的變量輸入一個字符串,我想if語句經歷,而不是未處理的異常...驗證,如果整數等於字符串

這裏是我的代碼:

Console.Write("Input: "); 
int i; 
bool success = int.TryParse("", out i); 

if (success) { 
    Console.WriteLine("Enter Integer!"); 
} else { 
    i = Convert.ToInt32(Console.ReadLine()); 
    Console.WriteLine("Output: ", i); 
} 

那麼我在這裏做錯了什麼?每次我輸入一個字符串時,我都不會去if語句,只會發生崩潰!

+1

你遇到了什麼異常? – rmn36

+3

閱讀文檔!如果數字被成功解析,則TryParse返回真*。所以你的'if'和'else'是錯誤的。另外你不需要'Convert.ToInt32',因爲你只是解析了你的號碼*。 –

+0

如果您發生崩潰,您也會收到一些反饋。什麼是錯誤?它是否包含建議的行動方案? – Jeroen

回答

1

我認爲你應該做這樣

Console.Write("Input: "); 
int i; 

bool success = int.TryParse(Console.ReadLine(), out i); //Getting the input and checking it 

if (!success) 
{ 
    Console.WriteLine("Enter Integer!"); 
} 

else 
{  
    Console.WriteLine("Output: ", i); 
} 

在你的代碼是在else語句所獲得的價值,如果你的輸入不能被解析到int,然後異常拋出。

+0

如果陳述仍然是錯誤的方式 – rmn36

+0

是的,我更新了它。 –

3

代碼中的問題是傳遞給TryParse的值與傳遞給Convert.ToInt32的值沒有關係。你應該閱讀的價值,然後調用TryParse具有相同值

Console.WriteLine("Enter an integer:"); 
var s = Console.ReadLine(); 
int i; 
if (int.TryParse(s, out i)) { 
    Console.WriteLine("You entered an integer"); 
} else { 
    Console.WriteLine("You did not enter an integer"); 
} 

如果你想繼續讀書,直到最終用戶輸入有效int,添加一個循環,就像這樣:

int i; 
do { 
    Console.WriteLine("Enter an integer:"); 
    var s = Console.ReadLine(); 
} while (!int.TryParse(s, out i));