Как сложить все числа в списке с помощью TextBox? - PullRequest
1 голос
/ 13 марта 2019

Я хочу посчитать и суммировать все значения в ListBox. Например, у меня есть следующие значения в моих ListBox: 4, 6, 1, 7. Мое текущее значение 18. Если я добавлю 2 с TextBox, мне нужно получить 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 ]

2 голосов
/ 13 марта 2019

Вы пропустили инициализацию значения суммы по умолчанию.Назначьте 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 голос
/ 13 марта 2019

Извините за, возможно, не ответ, но странно, что ваш компилятор не сказал вам инициализировать сумму. Во-вторых, я проверил ваш код, и он работает правильно, как и ожидалось, это означает, что если проблема не в переменной суммы, вы сделали что-то еще для этих полей где-то еще, чтобы ваш код не работал правильно.

Имея в виду ваш комментарий к предыдущему человеку, я бы сказал то же самое. В некоторых случаях (я знаю, это забавно, но) у вас могут быть вирусы на вашем компьютере. Проверь это. Однажды в своей жизни я провалил свою лабораторную работу по математике из-за вируса, который прервал мою программу, поэтому он нарисовал неправильную диаграмму!

0 голосов
/ 13 марта 2019

Необходимо установить сумму в 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(); 
}
0 голосов
/ 13 марта 2019

Использование неназначенной локальной переменной 'sum', сумма должна быть назначена перед использованием!

decimal sum = 0;

Остальное все в порядке

0 голосов
/ 13 марта 2019
    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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...