是否有只接受正数并且不接受负数的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