处理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, @"(?=[-+*/])|(?<=[-+*/])");
}
}
}
有人能帮我修一下吗?非常感谢你。
您正试图在运算符仍在的情况下转换字符串:
int num = Convert.ToInt32(textBox1.Text);//error here
在这一点上,你仍然有公式(2*3),而不是一个单独的数字(2)。您需要在拆分字符串并确认"token"是一个数字而不是运算符之后转换数字。
请注意,Convert.ToInt32设计用于在给定文本不是数字时引发异常。如果您希望Int32.TryParse容忍运算符而不抛出异常,则可以使用它。