使用sum函数得到错误答案

时间:2013-09-09 13:41:58

标签: c# winforms datagridview textbox

当我从datagridview获取数据到下面的文本框中,并且在其上应用了该函数时,我通常得到不正确的结果。我正在应用sum函数,它在result.text中提供的答案是不正确的。 有人可以在下面的代码中指出问题吗?

public void addqty()
        {
            int a, b;
            bool isAValid = int.TryParse(val1.Text, out a);
            bool isBValid = int.TryParse(val2.Text, out b);
            result.Text = (a + b).ToString();
        }

4 个答案:

答案 0 :(得分:3)

如果val1或val2未通过Parse,则a或b将等于0.您需要确保它们是有效数字,如果不是,则需要相应处理。

int a, b;
if (int.TryParse(val1.Text, out a) && int.TryParse(val2.Text, out b))
{
    result.Text = (a + b).ToString();
}
else
{
    //handle bad values
}

答案 1 :(得分:1)

如果A或B无效,您似乎没有考虑如何做。现在,如果A有效而B不是,它仍将返回A.对于B,情况也是如此。如果这不是您想要的功能,您可能需要应用不同的代码:

if (isAValid && isBValid) {result.Text = (a + b).ToString();}

答案 2 :(得分:1)

您未检查isAValidisBValid的结果,因此,如果其中任何一个未解析,则a和/或b的值将为{ {1}}。你仍会看到结果,但可能是错误的。

答案 3 :(得分:1)

我已为此功能添加了简单验证。您应该始终包括空检查,解析检查等...我怀疑文本框1或2正在发送一些无效数据。

    public void addqty()
    {
        int a, b;
        if (!int.TryParse(val1.Text, out a) || int.TryParse(val2.Text, out b))
            result.Text = "Can't convert variable a or variable b";
        else
            result.Text = (a + b).ToString();                        
    }


        textBox1.Text = string.IsNullOrEmpty(row.Cells["Serial #"].Value.ToString()) ? "0" : row.Cells["Serial #"].Value.ToString();
        textBox2.Text = string.IsNullOrEmpty(row.Cells["Barcode"].Value.ToString()) ? "0" : row.Cells["Barcode"].Value.ToString();
        textBox3.Text = string.IsNullOrEmpty(row.Cells["Quantity"].Value.ToString()) ? "0" : row.Cells["Quantity"].Value.ToString();