在组合框上使用if-else语句来选择数学运算(C#算术运算)

时间:2014-03-12 16:54:52

标签: c# if-statement combobox messagebox

private void answer_Click(object sender, EventArgs e)
    {
        int textbox1;
        int textbox2;
        int answer;

        textbox1 = int.Parse(textBox1.Text);
        textbox2 = int.Parse(textBox2.Text);



        if (comboBox1.SelectedText.ToString() == "+")
        {
            answer = (textbox1 + textbox2);

        }
        else if (comboBox1.SelectedText.ToString() == "-")
        {
            answer = (textbox1 - textbox2);

        }
        else if (comboBox1.SelectedText.ToString() == "*")
        {
            answer = (textbox1 * textbox2);

        }
        else if (comboBox1.SelectedText.ToString() == "/")
        {
            answer = (textbox1 / textbox2);

        }

        // the error is here that says Use of unassigned local variable 'answer'

        MessageBox.Show(answer.ToString());

    }
  • 我不明白为什么会出现错误,因为我已经在当前类中声明了变量“answer”。
  • 如何在消息框中显示计算示例:

textbox1上的用户输入12和textbox2上的2,因此他们选择“ - ”作为他们的操作,然后消息框应该只显示10。

3 个答案:

答案 0 :(得分:2)

在定义变量时,只需将变量赋值:

 int answer = 0;

如果您的任何条件不匹配,则answer仍将被取消分配。编译器会看到并警告您。

而您的另一个错误是,您正在将textBox1.TexttextBox2.Text解析为整数,但您未在计算中使用这些变量。将textboxone更改为textbox1并且textboxtwotextbox2

答案 1 :(得分:1)

我同意您必须初始化变量答案,但还有另一种解决办法!

你必须使用comboBox1.SelectedItem.ToString()而不是comboBox1.SelectedText.ToString()

;)再见

答案 2 :(得分:1)

快速重新格式化:

private void answer_Click(object sender, EventArgs e)
{
    int 
        textbox1 = int.Parse(textBox1.Text), 
        textbox2 = int.Parse(textBox2.Text), 
        answer = 0;

    if (comboBox1.Text == "+")
        answer = (textbox1 + textbox2);
    else if (comboBox1.Text == "-")
        answer = (textbox1 - textbox2);
    else if (comboBox1.Text == "*")
        answer = (textbox1 * textbox2);
    else if (comboBox1.Text == "/")
        answer = (textbox1 / textbox2);

    MessageBox.Show(answer.ToString());
}

希望你能看到原来的错误。

观察结果:

  • 小心命名具有相似名称的局部变量,例如外部范围中的变量,即。 “textbox1”等所有需要的是将“textbox1”的大小写更改为“textBox1”,并且出现编译错误。
  • 避免使用相等运算符比较字符串,而是使用string.Equals
  • 避免在没有适当的try / catch的情况下解析int,或者只使用int.TryParse(推荐)
  • 通过比较字符串值和常量来避免分支程序流(如果你当然可以避免它),在这种情况下你可以使用例如ComboBox.SelectedIndex来确定用户想要的操作
  • 避免使用隐式文化来编译变量,您可能会遇到格式化问题,在大多数情况下,对于数值,您可以使用不变文化,即。 MessageBox.Show(answer.ToString(CultureInfo.InvariantCulture));