我真的是编码新手,所以我不知道如何解决此错误:
$ mcs * .cs -out:main.exe $ mono main.exe 插入第一个数字:
未处理的异常: System.ArgumentNullException:值不能为null。 参数名称:字符串 在<902ab9e386384bec9c07fa19aa938869>:0中的System.Number.StringToNumber(System.String str,System.Globalization.NumberStyles选项,System.Number + NumberBuffer&数字,System.Globalization.NumberFormatInfo信息,System.Boolean parseDecimal)[0x00003]处 在<902ab9e386384bec9c07fa19aa938869>:0中的System.Number.ParseInt32(System.String s,System.Globalization.NumberStyles样式,System.Globalization.NumberFormatInfo信息)[0x00015]处 在<902ab9e386384bec9c07fa19aa938869>:0中的System.Int32.Parse(System.String s)[0x00007]处 在RectangleVolume.Program.Main()中的[0x0000f]在<0c8d91594f2e4f869d1e8405ed48fd66>:0中 [错误]致命异常:System.ArgumentNullException:值不能为null。 参数名称:字符串 在<902ab9e386384bec9c07fa19aa938869>:0中的System.Number.StringToNumber(System.String str,System.Globalization.NumberStyles选项,System.Number + NumberBuffer&数字,System.Globalization.NumberFormatInfo信息,System.Boolean parseDecimal)[0x00003]处 在<902ab9e386384bec9c07fa19aa938869>:0中的System.Number.ParseInt32(System.String s,System.Globalization.NumberStyles样式,System.Globalization.NumberFormatInfo信息)[0x00015]处 在<902ab9e386384bec9c07fa19aa938869>:0中的System.Int32.Parse(System.String s)[0x00007]处 在RectangleVolume.Program.Main()[0x0000f]中,位于<0c8d91594f2e4f869d1e8405ed48fd66>:0
代码如下:
using System;
namespace RectangleVolume
{
class Program
{
static void Main()
{
int number1;
int number2;
int volume;
int two;
int zero;
Console.Write("Insert the first number: ");
number1 = int.Parse(Console.ReadLine());
Console.Write("Insert the second number: ");
number2 = int.Parse(Console.ReadLine());
two = 2;
two = int.Parse(Console.ReadLine());
zero = 0;
zero = int.Parse(Console.ReadLine());
if (number1 < zero)
{
Console.WriteLine("First number is not a positive");
}
else
{
Console.WriteLine(number1 * two);
}
if (number2 < zero)
{
Console.WriteLine("second number is not a positive");
}
else
{
Console.WriteLine(number2 * two);
}
volume = number1 + number2;
Console.Write("The Volume is: ");
Console.WriteLine(volume);
Console.ReadLine();
}
}
}
如果任何人都知道如何解决该错误,谢谢您,ty
答案 0 :(得分:2)
不要重复自己:让我们提取方法:
using System.Globalization;
...
private static int ReadNonNegative(string title) {
int result = 0;
while (true) do {
Console.Write($"Insert the {title} number: ");
if (!int.TryParse(Console.ReadLine(), out result)) {
Console.WriteLine();
Console.WriteLine("Syntax error. Not a valid integer value. Please, try again.");
}
else if (result < 0) {
Console.WriteLine();
Console.WriteLine($"{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(title)} number must not be negative.");
}
else
return result;
}
}
然后我们可以轻松使用它
static void Main() {
int number1 = ReadNonNegative("first");
int number2 = ReadNonNegative("second");
Console.WriteLine($"{number1 * 2}");
Console.WriteLine($"{number2 * 2}");
int volume = number1 + number2;
Console.Write($"The Volume is: {volume}");
Console.ReadLine();
}