Как суммировать все числа в Listbox с помощью TextBox?

#c# #textbox #listbox #sum

#c# #текстовое поле #список #сумма

Вопрос:

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

Комментарии:

1. Какое еще число это вам дает? Можете ли вы пройти с отладчиком через цикл и проверить каждое суммируемое значение? Небольшой совет: Используйте foreach вместо цикла for для перебора элементов

Ответ №1:

Вы пропустили инициализацию значения 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. Нет, я пробовал это, если у меня были следующие числа 4,5 и 6, это показывает результат 28

2. Отладьте свой код и проверьте значение sum. Консоль. Здесь определенно поможет WriteLine.

Ответ №2:

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

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

Комментарии:

1. согласен с вашим первым пунктом, но не со вторым пунктом. Только из-за кода инициализации по умолчанию выдавал странные результаты. все еще 1 для первого пункта…

2. человек из @PrasadTelkikar сказал, что он пробовал инициализироваться, но проблема все еще была xD

Ответ №3:

     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;
    }
  

Ответ №4:

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

 decimal sum = 0;
  

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

Ответ №5:

Необходимо установить 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(); 
}
  

Комментарии:

1. foreach (var s in listBox2.Items) { ... } пожалуйста, исправьте это. Вам нужно выполнить итерацию, хотя элементы не имеют ListBox. Ваш код содержит ошибки, пожалуйста, исправьте это