找不到 System.ArgumentNullException 的修复:值不能为 null

问题描述 投票:0回答:1

我对编码真的很陌生,所以我不知道如何修复这个错误:

$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

c# console
1个回答
4
投票

不要重复自己:让我们提取一个方法

   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();
   } 
© www.soinside.com 2019 - 2024. All rights reserved.