是否有隻接受正數並且不接受負數的c#代碼?阻止C#中的負數?
像
Console.WriteLine("Write number");
Console.ReadLine();
我閱讀教程,但仍然沒有幫助
,現在我沒有任何想法如何防止負數。
是否有隻接受正數並且不接受負數的c#代碼?阻止C#中的負數?
像
Console.WriteLine("Write number");
Console.ReadLine();
我閱讀教程,但仍然沒有幫助
,現在我沒有任何想法如何防止負數。
有uint
但是這不是你想要的,因爲用戶仍然可以輸入一個負數。
後您解析字符串,並確保它是一個整數,只是通過調用Math.Abs()
取絕對值,你會做。
你必須通過閱讀次數手動檢查自己...
do {
//Read number into variable
if (number < 0) {
Console.WriteLine("Number cannot be negative");
}
}while(number < 0)
它的工作原理,如果其負面然後檢查。如果是,那麼它會警告用戶,循環強制它們重試。
謝謝,那是我正在尋找,但「數不能否定」不停止,只是來沒有停止時,我輸入負數,我想它來一次。 – CsharpNoob
對不起,我不清楚。您需要用您用來獲取號碼的代碼替換我的評論。這樣當'if(number <0)'被擊中時,它會再次詢問數字。 – Grambot
爲了使用戶友好的循環往往是很好的,這將繼續要求輸入,直到輸入一個有效的輸入。如果輸入了非有效輸入,TryParse
返回false
。當輸入有效輸入時TryParse
返回true
和number
保存該值。使用uint
將防止輸入負數。
uint number;
do
{
Console.WriteLine("Write non-negative number");
string strNumber = Console.ReadLine();
}
while(!uint.TryParse(strNumber, number));
如果你想,以防止用戶在數據輸入字段中輸入負數,你有幾種選擇。
不同種類的應用程序 - 控制檯,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" />
Console.ReadLine()不會限制用戶可以在命令行中輸入的內容。您需要自己驗證輸入;可能最簡單的方法就是像BoltClock所描述的那樣。但是,您需要嘗試 - 在值不是uint的情況下,抓住他的代碼來捕獲無效的轉換異常。
這不僅將確保用戶輸入的是一個整數,而且它是積極的。否則,你將不得不執行2部分檢查;第一個是用戶輸入一個整數,第二個是大於0的整數。
有得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
可能不可用。
「預防」意味着什麼?自己檢查號碼。 – VMAtm