我对编码真的很陌生,所以我不知道如何修复这个错误:
$mcs *.cs -out:main.exe $单声道主.exe 插入第一个数字:
未处理的异常: System.ArgumentNullException:值不能为空。 参数名称:字符串 在 System.Number.StringToNumber (System.String str、System.Globalization.NumberStyles options、System.Number+NumberBuffer& number、System.Globalization.NumberFormatInfo info、System.Boolean parseDecimal) [0x00003] in <902ab9e386384bec9c07fa19aa938869>:0 在 System.Number.ParseInt32 (System.String s、System.Globalization.NumberStyles 样式、System.Globalization.NumberFormatInfo 信息) [0x00015] 中 <902ab9e386384bec9c07fa19aa938869>:0 在 <902ab9e386384bec9c07fa19aa938869>:0 中的 System.Int32.Parse (System.String s) [0x00007] 在 RectangleVolume.Program.Main () [0x0000f] 中 <0c8d91594f2e4f869d1e8405ed48fd66>:0 [错误] 致命的未处理异常:System.ArgumentNullException:值不能为空。 参数名称:字符串 在 System.Number.StringToNumber (System.String str、System.Globalization.NumberStyles options、System.Number+NumberBuffer& number、System.Globalization.NumberFormatInfo info、System.Boolean parseDecimal) [0x00003] in <902ab9e386384bec9c07fa19aa938869>:0 在 System.Number.ParseInt32 (System.String s、System.Globalization.NumberStyles 样式、System.Globalization.NumberFormatInfo 信息) [0x00015] 中 <902ab9e386384bec9c07fa19aa938869>:0 在 <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
不要重复自己:让我们提取一个方法:
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();
}