#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. Ваш код содержит ошибки, пожалуйста, исправьте это