处理FormatException是未处理的错误

本文关键字:错误 未处理 FormatException 处理 | 更新日期: 2023-09-27 18:25:10

目前,我有一个用于输入的文本框和用于输出的标签。现在,我正在研究算术运算符。我想处理数字,不管它们的运算符是什么。(例如,加法、减法、乘法和除法)。示例:如果我在文本框中键入2*3,答案将显示在标签中。

Im使用包含正则表达式拆分;然而,它不起作用。它给出一个错误

FormatException未处理,输入字符串的格式不正确。

这是我的代码:

namespace Windows
{
   public partial class Form1 : Form
   {
      public Form1()
      {
         InitializeComponent();
      }
      private void button1_Click(object sender, EventArgs e)
      {
         int num = Convert.ToInt32(textBox1.Text);//error here
         string s = textBox1.Text;
         string seps = @"('t)|('n)|('+)|(-)|('*)|(/)|('()|('))";
         string[] tokens = System.Text.RegularExpressions.Regex.Split(s, seps);
         foreach (string token in tokens)
            label.Text = token;
         if (textBox1.Text.Contains("*")==true)
         {
            int num2 = num * num;
            label.Text = Convert.ToString(num2);
         }
      }
      public void CalcLexer(String str)
      {
         // Regex.Split(str, @"(?=[-+*/])|(?<=[-+*/])");
      }
   }
}

有人能帮我修一下吗?非常感谢你。

处理FormatException是未处理的错误

您正试图在运算符仍在的情况下转换字符串:

int num = Convert.ToInt32(textBox1.Text);//error here

在这一点上,你仍然有公式(2*3),而不是一个单独的数字(2)。您需要在拆分字符串并确认"token"是一个数字而不是运算符之后转换数字。

请注意,Convert.ToInt32设计用于在给定文本不是数字时引发异常。如果您希望Int32.TryParse容忍运算符而不抛出异常,则可以使用它。