0

在大多数情况下,这确实有效,问题是为 Andrea 和 Brittany 弹出消息框,但它对 Eric 正常工作。如果我尝试将 else 语句放在每个 if 语句之后,它仍然会在 Brittany 和 Andrea 上弹出,但随后也会在 Eric 上弹出。有人可以告诉我我做错了什么。

    private void button1_Click(object sender, EventArgs e)
    {
        String Andrea;
        String Brittany;
        String Eric;
        if (textBox1.Text == "Andrea")
        {     
            Commission.Text = (Convert.ToDouble(textBox2.Text) / 10).ToString();
        }

        if (textBox1.Text == "Brittany")
        {
            Commission.Text = (Convert.ToDouble(textBox2.Text) / 10).ToString();
        }


        if (textBox1.Text == "Eric")
        {
            Commission.Text = (Convert.ToDouble(textBox2.Text) / 10).ToString();
        }
        else
        {
            MessageBox.Show("The spelling of the name is incorrect", "Bad Spelling");
        }   

        {




        } 

    }
4

4 回答 4

2

如果这样,请尝试使用 else。

if (textBox1.Text == "Andrea")
{     
    Commission.Text = (Convert.ToDouble(textBox2.Text) / 10).ToString();
}
else if (textBox1.Text == "Brittany")
{
    Commission.Text = (Convert.ToDouble(textBox2.Text) / 10).ToString();
}
else if (textBox1.Text == "Eric")
{
    Commission.Text = (Convert.ToDouble(textBox2.Text) / 10).ToString();
}
else
{
    MessageBox.Show("The spelling of the name is incorrect", "Bad Spelling");
} 
于 2010-09-08T22:53:26.937 回答
2

试试这个...通过保留名称列表,您可以轻松扩展所涵盖的名称,而无需编写更多代码。只需将新名称添加到名称列表中

List<string> names = new List<string>() // list of names to check for
{                                       // if a name is not in this list
   "Andrea","Brittany","Eric"           // the error message will show
};                                      // otherwise, the calculation will be performed

if ( names.Contains(TextBox1.Text) )
{
    Commission.Text = (Convert.ToDouble(textBox2.Text) / 10).ToString();
}
else
{
    MessageBox.Show("The spelling of the name is incorrect", "Bad Spelling");
}
于 2010-09-08T22:58:24.940 回答
1
switch(textBox1.Text)
{
    case "Andrea" : Commission.Text = (Convert.ToDouble(textBox2.Text) / 10).ToString();
    case "Brittany" : Commission.Text = (Convert.ToDouble(textBox2.Text) / 10).ToString();
    case "Eric" : Commission.Text = (Convert.ToDouble(textBox2.Text) / 10).ToString();
    default: MessageBox.Show("The spelling of the name is incorrect", "Bad Spelling");
}
于 2010-09-08T23:05:51.663 回答
0

好吧,我不知道您之前的尝试,但就目前而言,每个 if 语句都是单独处理的。因此,如果 textBox1.Text != "Eric",则附加到 Eric 的 else 将被触发,并且在这种情况下显示 MessageBox,而不管其他两个 if 是否匹配。

也许你的 else if 尝试有错误?试试上面的一些人是如何发布的,看看是否有效。

于 2010-09-08T23:00:02.643 回答