更改第二个文本框时,除以零分隔消息仍然存在

时间:2018-09-27 01:04:05

标签: c#

Calculator项目,其中有2个用于输入数字的文本框,一个下拉列表,用于数学运算符的“ OperatorList”和一个“计算”按钮。

目标:当用户在文本框中输入值并选择数学运算符时,它将在“结果”标签中显示结果。如果用户尝试除以零,则结果标签中将显示一条消息“您不能除以零,否则请执行“ /”操作。

当“ /”在OperatorList中并且在value2文本框中为0时,消息确实显示在“结果标签”上,指出“您不能被零除”。但是,如果我更改第二个数字,则消息“您不能被零除”仍然存在,并且不会执行数学运算符“ /”。我的C#代码在下面,但该消息不会显示。我是C#的新手,所以我知道我缺少或忽略了一些简单的内容,请帮忙。

if (ValueBox1.Text.Length > 0 && ValueBox2.Text.Length > 0)
{
    switch (OperatorList.SelectedValue)
    {
        case "+":
            result = value1 + value2;
            break;
        case "-":
            result = value1 - value2;
            break;
        case "*":
            result = value1 * value2;
            break;
    }

    if (OperatorList.SelectedValue == "/")
    {
        if (value2 == 0)
        {
            ResultLabel.Text = "You cannot divide by zero";
        }
        result = value1 / value2;

        return;
    }

    ResultLabel.Text = result.ToString();
}

2 个答案:

答案 0 :(得分:3)

在进行除法之前,您需要测试零除法。您之后要进行测试

           switch (OperatorList.SelectedValue)
            {
                case "+":
                    result = value1 + value2;
                    break;
                case "-":
                    result = value1 - value2;
                    break;
                case "*":
                    result = value1 * value2;
                    break;
                case "/":                   
                    if (value2 == 0)
                    {
                       ResultLabel.Text = "You cannot divide by zero";
                       return;
                     }
                    result = value1 / value2;
                    break;
            }

答案 1 :(得分:2)

尝试更新这段代码,我移动了return语句。这将迫使您的除法操作无法到达代码底部的显示部分。

        if (OperatorList.SelectedValue == "/")
        {
            if (value2 == 0)
            {
                ResultLabel.Text = "You cannot divide by zero";
                return;
            }                
            result = value1 / value2;
        }            
        ResultLabel.Text = result.ToString();