【问题标题】:An unhandled exception of type 'System.FormatException' Additional information: Input string was not in a correct format [duplicate]“System.FormatException”类型的未处理异常附加信息:输入字符串的格式不正确[重复]
【发布时间】:2023-03-12 01:30:01
【问题描述】:
bool emptyline = false;
List<string> arry = new List<string>();
List<int> arryint = new List<int>();
for (int i = 0; emptyline == false; i++)
{
    arry.Add(Console.ReadLine());
    if (arry[i] == string.Empty) { emptyline = true;   }
     arryint.Add(int.Parse(arry[i]));  
}

当我尝试运行时弹出此错误

“System.FormatException”类型的未处理异常发生在 mscorlib.dll 附加信息:输入字符串不在 格式正确。

【问题讨论】:

  • 查看错误信息:输入字符串的格式不正确。这意味着解析时 arry[i] 不是整数。这也可能发生在空字符串上。

标签: c# visual-studio


【解决方案1】:

错误很清楚,告诉您不能将非数字字符串解析为整数。尝试使用int.TryParse

int val;
if (int.TryParse(arry[i], out val))
{
    arryint.Add(val);
}

【讨论】:

    【解决方案2】:

    查看代码,似乎传递给int.Parse() 的字符串不是数字。

    良好的做法是使用int.TryParse("some string", out int value),TryParse 将根据天气返回truefalse,它是一个整数,您可以使用 if 语句来处理它。

    另外,你不应该使用array[i] == string.Empty,而是使用字符串函数string.IsNullOrEmpty(array[i])

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      正如上面 Rainman 和 Toni Kostelac 所说,错误来自

      arryint.Add(int.Parse(arry[i]));
      

      为了更简洁,我将您的代码重写为波纹管(在我看来),并且您不需要创建字符串列表来存储输入数据:

          static void Main(string[] args)
          {
              List<int> lstVal = new List<int>();
      
              for (;;)
              {
                  string str = Console.ReadLine();
                  if (str.Trim().Equals(""))
                  {
                      break;
                  }
                  else
                  {
                      int iVal;
                      if (int.TryParse(str, out iVal))
                      {
                          lstVal.Add(iVal);
                      }
                  }
              }
      
              Console.WriteLine("Input value : ");
      
              foreach (int iVal in lstVal)
              {
                  Console.WriteLine("{0}", iVal);
              }
      
              Console.ReadKey(true);
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-23
        • 2022-06-24
        • 2023-03-14
        相关资源
        最近更新 更多