0

Andrea と Brittany に対してはメッセージ ボックスが表示されますが、Eric に対しては正しく機能します。各 if ステートメントの後に else ステートメントを配置しようとすると、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

これを試してみてください...名前のリストを保持することで、対象となる名前を簡単に拡張でき、それ以上コードを記述する必要はありません。新しい名前を名前リストに追加するだけです

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 に答える
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 に答える
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 が起動し、この場合、他の 2 つの if が一致したかどうかに関係なく、MessageBox が表示されます。

おそらく、else if の試行でエラーが発生しましたか? 上記の人々の何人かが投稿した方法を試して、それが機能するかどうかを確認してください.

于 2010-09-08T23:00:02.643 に答える