2011-11-24 32 views
-2

是否有隻接受正數並且不接受負數的c#代碼?阻止C#中的負數?

Console.WriteLine("Write number"); 
Console.ReadLine(); 

我閱讀教程,但仍然沒有幫助

,現在我沒有任何想法如何防止負數。

+0

「預防」意味着什麼?自己檢查號碼。 – VMAtm

回答

0

uint但是這不是你想要的,因爲用戶仍然可以輸入一個負數。

後您解析字符串,並確保它是一個整數,只是通過調用Math.Abs()取絕對值,你會做。

3

你必須通過閱讀次數手動檢查自己...

do { 
    //Read number into variable 

    if (number < 0) { 
    Console.WriteLine("Number cannot be negative"); 
    } 
}while(number < 0) 

它的工作原理,如果其負面然後檢查。如果是,那麼它會警告用戶,循環強制它們重試。

+0

謝謝,那是我正在尋找,但「數不能否定」不停止,只是來沒有停止時,我輸入負數,我想它來一次。 – CsharpNoob

+0

對不起,我不清楚。您需要用您用來獲取號碼的代碼替換我的評論。這樣當'if(number <0)'被擊中時,它會再次詢問數字。 – Grambot

5

爲了使用戶友好的循環往往是很好的,這將繼續要求輸入,直到輸入一個有效的輸入。如果輸入了非有效輸入,TryParse返回false。當輸入有效輸入時TryParse返回truenumber保存該值。使用uint將防止輸入負數。

uint number; 

do 
{ 
    Console.WriteLine("Write non-negative number"); 
    string strNumber = Console.ReadLine(); 
} 
while(!uint.TryParse(strNumber, number)); 
0

如果你想,以防止用戶在數據輸入字段中輸入負數,你有幾種選擇。

  • 一個是不允許輸入除數字,逗號和 句點之外的任何內容。
  • 另一個是從數據錄入讀之後他們放棄的人物在你的代碼。

不同種類的應用程序 - 控制檯,WinForms/WPF或網站之間的處理方式是不同的。

例如,一個ASP.Net網頁上,你可以使用驗證控件允許輸入唯一的數字。這是一種方法:

<asp:CompareValidator 
    ControlToValidate="AmountTextbox" 
    Operator="GreaterThanEqual" 
    Type="Currency" 'needed this to cover amts with & w/o decimals 
    ValueToCompare="0" 
    ErrorMessage="The Amount cannot be negative." 
    Display="None" 
    Runat="server" /> 
0

Console.ReadLine()不會限制用戶可以在命令行中輸入的內容。您需要自己驗證輸入;可能最簡單的方法就是像BoltClock所描述的那樣。但是,您需要嘗試 - 在值不是uint的情況下,抓住他的代碼來捕獲無效的轉換異常。

這不僅將確保用戶輸入的是一個整數,而且它是積極的。否則,你將不得不執行2部分檢查;第一個是用戶輸入一個整數,第二個是大於0的整數。

1

有得uint.TryParse不同將是int.TryParse(string, NumberStyles, IFormatProvider, out int)過載,它可以讓您指定更有效的輸入應該是什麼樣子:

string str = ... 
int value; 
if (int.TryParse(str, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite, CultureInfo.CurrentCulture, out value)) 
{ 
    // ... 
} 

正常int.TryParse還包括NumberStyles.AllowLeadingSign這是你不想要的東西。如果有對符合CLS碼嚴格的準則

uint可能不可用。