Как добавить значение элемента списка в локальную переменную в С#?

Итак, я выполняю практическое задание, которое включает в себя просьбу пользователя ввести оценку от 0 до 100. Программа будет отслеживать количество введенных баллов, общий балл (сумма всех баллов) и средний балл.

Для подсчета общего балла мне пришла в голову идея использовать цикл for, который будет циклически перемещаться по моему списку и добавлять каждый балл к переменной (ниже).

int sTotal = 0;
for(int i = 0; i < lstScores.Items.Count; i++)
{
    //Calculation occurs here
}
txtScoreTotal.Text = Convert.ToString(sTotal);

Дело в том, что я точно не знаю, как это сделать. Я пытался искать безрезультатно. Любая помощь будет принята с благодарностью.


person AgentNo    schedule 13.02.2018    source источник
comment
@ Мун Чжу, я действительно был слишком быстр, я удалил свой комментарий и предоставил ответ, который считаю правильным.   -  person D.J. Klomp    schedule 13.02.2018


Ответы (3)


Видеть это

int i = 0, result = 0;
while (i < lstScores.Items.Count)
{
   result += Convert.ToInt32(lstScores.Items[i++]);
}

txtScoreTotal.Text = Convert.ToString(result);

Я не пробовал следовать, но вы также можете попробовать 1-строчное решение

var sum = lstScores.Items.OfType<object>().Sum(x => Convert.ToInt32(x));

Вам нужно обработать исключение, если сумма превышает int.Max

person SSD    schedule 13.02.2018

Проще всего это сделать с помощью цикла foreach следующим образом:

        int sTotal = 0;
        foreach (string item in lstScores.Items)
        {
            sTotal += Int32.Parse(item);
        }
        txtScoreTotal.Text = Convert.ToString(sTotal);
person D.J. Klomp    schedule 13.02.2018
comment
если вы дадите ответ, может быть, вы могли бы научить немного ловить рыбу .. вместо того, чтобы просто кормить рыбу;) - person Mong Zhu; 13.02.2018
comment
Для очень простых вопросов я обычно не предоставляю это, так как чаще всего я не могу найти правильный вопрос о методе или не хватает базовых знаний. Предоставление правильного метода не требует каких-либо спецификаций, и из-за отсутствия базовых знаний (совершенно приемлемых для начинающих программистов) я не могу решить это в одном ответе. Я просто предоставляю решение и ключевые слова в Google для дальнейшего использования. - person D.J. Klomp; 13.02.2018
comment
чтобы процитировать Как мне написать хороший ответ? Справочный центр Краткость допустима, но полные объяснения лучше. ИМХО, если задают такие простые вещи, то отсутствие базовых знаний (которые являются основой понимания данного кода) на самом деле мешает кому-то понять, почему это на самом деле работает без каких-либо объяснений. Но это твой ответ. Не стесняйтесь - person Mong Zhu; 13.02.2018

person    schedule
comment
Что такое int16? - person Rufus L; 13.02.2018
comment
Вы можете вызвать метод TryParse, написав Int16, поэтому, если преобразование пойдет плохо, вы можете обработать исключение с помощью простого else - person Siccio; 14.02.2018
comment
Я имел в виду, что вы написали int16, а не Int16. Но мне также было любопытно, почему вы используете это вместо Int32, для которого int является псевдонимом. - person Rufus L; 14.02.2018
comment
о, я изменил int16 на Int16, ошибся, извините, но я не знаю, почему я должен использовать Int32 вместо Int16 - person Siccio; 15.02.2018
comment
Ну, Int16 относительно мал, поэтому вы можете точно анализировать только числа до 32 767. Максимальное значение Int32 составляет 2 147 483 647 и обычно используется. Вот почему int — это псевдоним для Int32, который вы используете везде. В общем, вы должны просто использовать псевдоним. - person Rufus L; 15.02.2018