[英]System.OverflowException: Value was either too large or too small for an Int16 in iis 6
[英]Unhandled exception System.OverflowException Value is either too large or too small for Int32
我在这里有这个C#
代码,我想要做的是,当我输入一个包含多位数字的数字时,应用程序会崩溃,我希望它不会崩溃,但我不知道该怎么做,我尝试更改.Parse
命令但知道要使用哪个命令。 一个例子是,当我运行应用程序时,我想输入一个像564984894897987878
这样的564984894897987878
并且我希望应用程序不会崩溃,在这种情况下,有人可以帮助我吗? 如果您找到解决方案,请在此处发布,包括您的代码和我的代码,谢谢?!
int num;
Console.Write("Please type your number here:");
num = Int32.Parse(Console.ReadLine());
if (num < 0)
Console.WriteLine("This is a negative number!");
if (num > 0)
Console.WriteLine("This number is a positive number");
如果你想表示一个任意大的整数,你应该使用BigInteger
。
如果您使用int
(又名System.Int32
),您将被限制在 -2147483648 到 2147483647(含)的范围内。
如果您使用long
(又名System.Int64
),您将被限制在 -9223372036854775808 到 9223372036854775807 的范围内。
现在它可能对你来说long
- 但是用户仍然可以很容易地使你的应用程序崩溃,或者至少使它不能“按预期”工作。 使用BigInteger
您应该可以处理计算机有足够内存可以存储的任何整数值。
您的代码几乎可以轻松转换为使用BigInteger
- 只需使用BigInteger.Parse
而不是Int32.Parse
,然后与BigInteger.Zero
进行比较。 为了进一步改进代码,除了处理大整数之外,您还可以使用BigInteger.TryParse
通过优雅地向用户报告这些无效输入来处理无效输入,而不是因FormatException
而崩溃。
您可以使用 TryParse:
Console.Write("Please type your number here:");
if(!Int32.TryParse(Console.ReadLine(), out num))
Console.WriteLine("Invalid number");
if (num < 0)
Console.WriteLine("This is a negative number!");
if (num > 0)
Console.WriteLine("This number is a positive number");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.