如何使用文本框对列表框中的所有数字求和?

时间:2019-03-13 13:13:19

标签: c# textbox listbox sum

我想对ListBox中的所有值进行计数和求和。例如,我在ListBox中具有以下值:4617。我当前的值为18。如果我将2TextBox相加,则需要得到20,如果我加上5,则总共需要得到25

如果我用下面的代码尝试它,它给了我一个完整的数字。

这是我的代码:

private void AddButton_Click(object sender, EventArgs e)
{
    decimal sum;
    listBox2.Items.Add(TextBox1.Text);
    TextBox1.Text = "";

    for (int i = 0; i < listBox2.Items.Count; i++)
    {
        sum += Convert.ToDecimal(listBox2.Items[i].ToString());
    }

    Label1.Text = sum.ToString();
}

5 个答案:

答案 0 :(得分:2)

您没有初始化sum的默认值。在将值添加到sum = 0变量之前分配sum

private void AddButton_Click(object sender, EventArgs e)
{
    decimal sum = 0;  //Set sum = 0  by default
    listBox2.Items.Add(TextBox1.Text);
    TextBox1.Text = "";

    for (int i = 0; i < listBox2.Items.Count; i++)
    {
        //To check value of sum after each iteration, you can print it on console
        Console.WriteLine("Sum =" +sum);
        sum += Convert.ToDecimal(listBox2.Items[i].ToString());
    }

    Label1.Text = sum.ToString();
}

答案 1 :(得分:1)

很抱歉可能无法回答,但是奇怪的是您的编译器没有告诉您初始化sum。第二个我测试了您的代码,它可以按预期正常运行,这意味着,如果问题不在于sum变量,则您需要在其他地方对该字段进行其他操作,以使您的代码无法正常工作。

考虑到您对上一个人的评论,我也想说同样的话。在某些情况下(我知道这很有趣,但是)您的计算机上可能装有病毒。核实。我一生中有一次因为病毒中断了我的程序而使我的数学实验室工作无法通过,因此它绘制了错误的图表!病态的我知道:D

答案 2 :(得分:0)

    private void button1_Click(object sender, EventArgs e)
    {
        var sum = 0;
        var value = 0;

        listBox1.Items.Add(textBox1.Text);

        foreach (var item in listBox1.Items)
        {
            if (!int.TryParse(item.ToString(), out value))
                continue;

            sum = sum + value;
        }

        label1.Text = sum.ToString();
        textBox1.Text = string.Empty;
    }

答案 3 :(得分:0)

使用未分配的局部变量'sum',必须在使用前分配sum!

decimal sum = 0;

其他都没事

答案 4 :(得分:0)

需要将sum设置为0,也最好使用foreach代替Dotloop。

private void AddButton_Click(object sender, EventArgs e) {
    decimal sum = 0;
    listBox2.Items.Add(TextBox1.Text);
    TextBox1.Text = ""; 
    foreach (string s in listBox2) { 
        sum += Convert.ToDecimal(s);
    } 
    Label1.Text = sum.ToString(); 
}