我是初学C#开发人员,我无法弄清楚我得到的一些错误。让我解释一下我创建计算器的步骤。
首先我创建了2个变量
string operand = string.Empty;
string input = string.Empty;
// input will be a number in string such as "1" or "2"
// operand will be an operand such as "-" or "+"
// I've created a button
private void btn1_Click(object sender, EventArgs e)
{
// this is button number 1 so:
input += "1"
// and there is my textbox which shows what I entered.
textbox1.Text += input;
// it adds what is in input to the string in textbox1.
}
我为所有按钮分配了这样的每个值。到目前为止,一切都很好。
下一步是计算textbox1.Text
我已将textChanged
值分配给textBox1.Text
(假设最后它将是输入中的内容)
private void textBox1_TextChanged(object sender, EventArgs e)
{
// I added it's value to
TextBox1.Text += input;
}
之后,当我在(3 + 2)
中输入textBox1.Text
时,该值将等于输入。
之后执行计算部分
private void Calculate_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(textBox1.Text);
string a1 = Convert.ToString(a);
MessageBox.Show(a1);
// so it converts the string "3 + 2" to int a = 3 + 2 and shows
}
当我运行脚本时,它会被锁定并且什么都不做。
答案 0 :(得分:4)
我不明白这段代码的重点:
private void textBox1_TextChanged(object sender, EventArgs e)
{
// i assigned it's value to
TextBox1.Text += input;
}
如果更改文本框的文本,将一次又一次地调用方法textBox1_TextChanged
。我认为不需要这样做。
然后在你的Calculate_Click
方法中,你正在做可怕的错误。我认为你误解了Convert.ToInt32
的使用。你认为如果你这样写:
int i = Convert.ToInt32 ("3 + 2");
i
将等于5,对吧? 不! Convert
课程的方法无法识别数学表达式。它们只识别5,999,123和1234567等数字。
那么如果它无法识别你的表情会怎么样?将抛出FormatException
。而且我认为这就是为什么你说有一个"错误"。
如何解决这个问题?那么,你需要找到一个数学表达解析器"当然!您可以在Google上轻松找到其中一个。然后你只需在项目中引用库并使用它的一种方法和BAM!它有效!
答案 1 :(得分:1)
你无法转换" 3 + 2"串起来。它不能简单地在Convert.Int32上转换为5。它会引发异常