我正在创建一个具有多种功能的学生模块表单。我在读取列表框中的最小值和最大值时遇到问题。我已经挣扎了好几天,非常感谢任何形式的帮助。提前致谢!我尝试过使用不同的数组,存储不同的值等。我认为代码中的问题来自没有存储“标记”。但我确信它正在工作,并且相信问题出在 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 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
线
lowest = ModuleData.studentMark.ToString()[index];
是不正确的,会给你字符串中一个字符的 char 值。上面一行所做的是获取字符串标记,再次将其转换为字符串,然后index
从该字符串中选择索引处的字符。
相反,您希望字符串作为整数,可以通过以下方式实现
lowest = int.Parse(ModuleData.studentMark[index]);
慕少森
TA贡献2019条经验 获得超9个赞
lowest = ModuleData.studentMark.ToString()[index];
这一行几乎肯定是不正确的,因为您要返回集合的字符串表示形式(可能类似于"System.String[]"
or "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
字段没有按您预期的那样填充。
- 2 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消