2014-10-29 96 views
1

我試圖獲取來自用戶的輸入有效的整數,我寫必須顯示這些輸入的錯誤信息功能..試圖從鍵盤輸入

1)0或負數有效的整數

2)的字符串

它爲字符串而不是0或負數

我無法找到我的錯誤.. :-(

public int getValidNumber() 
    { 
     int temp_int; 
     while ((!int.TryParse(Console.ReadLine(), out temp_int)) && (temp_int > 0)) 
     { 
      Console.WriteLine("Not a valid number....try again"); 
     } 
     return temp_int; 
    } 

它是立即使用temp_int變量的正確方法....?

回答

1

最明顯的錯誤是你的,而如果int是大於0運行,你不想:

//Assign to temp_int first: 
int.TryParse(Console.ReadLine(), out temp_int); 
while (temp_int < 1) 
{ 
    Console.WriteLine("Not a valid number....try again"); 
    int.TryParse(Console.ReadLine(), out temp_int); 
} 
+0

感謝回覆作品真棒.....但我能知道爲什麼我的temp_int不能在內部工作,而.. ..? – 2014-10-29 05:26:12

+0

@VellankiGaneshBabu我沒有運行你的代碼,但它可能是因爲當你想'&&(temp_int <1)'時,你有'&&(temp_int> 0)'。你有它的方式,它會進入非零正整數的循環。 – Shadow 2014-10-29 05:30:25

+0

哇真的很好的經驗有這個聊天..謝謝! – 2014-10-29 05:33:12

1
getValidNumber(Console.ReadLine()); 

...

public int getValidNumber(string input) 
{ 
    int temp_int = int.TryParse(input, out temp_int); 
    if (temp_int =< 0) 
    { 
     Console.WriteLine("Not a valid number....try again"); 
    } 
    return temp_int; 
} 
+0

謝謝回覆,我會用while循環,延長你的代碼... – 2014-10-29 05:28:48

+0

對沒錯,把while循環中調用'getValidNumber(到Console.ReadLine())左右;'它的好,使業務規則獨立於GUI的功能(控制檯,Winform,ASP.Net,Mobile)... – 2014-10-29 05:34:07