Возникли проблемы при разработке минимальных и максимальных расчетов в моих формах на C # - PullRequest
0 голосов
/ 02 апреля 2019

Я создаю форму студенческого модуля с несколькими функциями. У меня проблемы с чтением минимальных и максимальных значений в списке. Я боролся в течение нескольких дней и был бы очень признателен за любую форму помощи. Заранее спасибо!

Я пытался использовать разные массивы, сохраняя разные значения и т. Д. Я думал, что проблемы в коде произошли из-за того, что «метка» не была сохранена. Но я уверен, что это работает, и верю, что проблемы лежат в строчке кода в 15.

public int MinMark()
        {
            int lowest = int.Parse(ModuleData.studentMark[0]);
            for (int index = 1; index < ModuleData.studentMark.Count;index++)
            {
                if (int.Parse(ModuleData.studentMark[index]) < lowest) 
                {
                    lowest = ModuleData.studentMark.ToString()[index];
                }
            }
            return lowest;

Пока мой код просто выводит первый индекс из списка. я изучил все свои лекционные заметки и попробовал все, что мог придумать, чтобы заставить его работать.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Линия

lowest = ModuleData.studentMark.ToString()[index];

неверно и даст вам символьное значение символа в строке. То, что делает приведенная выше строка, - это взять метку, представляющую собой строку, снова преобразовать ее в строку и затем выбрать символ с индексом index из этой строки.

Вместо этого вы хотите строку как целое число, которое может быть достигнуто как показано ниже

lowest = int.Parse(ModuleData.studentMark[index]);
0 голосов
/ 02 апреля 2019
lowest = ModuleData.studentMark.ToString()[index];

Эта строка почти наверняка неверна, поскольку вы возвращаете строковое представление вашей коллекции (вероятно, что-то вроде "System.String[]" или "System.Collections.Generic.List'1[System.String]") и получаете символ из строки по индексу и косвенно преобразуете этот символ в целое число , Линия, вероятно, должна быть

lowest = int.Parse(ModuleData.studentMark[index]);

Однако вы можете заменить этот метод одним запросом LINQ, например:

public int MinMark() => ModuleDate.studentMark.Select(int.Parse).Min();

Это позволит проанализировать все оценки учащихся в целые числа, а затем выбрать наименьшее из коллекции. Если это все еще только возвращает первый индекс, то первый индекс, вероятно, является самым низким значением в вашем случае, или поле ModuleDate.studentMark не заполняется, как вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...