为了账号安全,请及时绑定邮箱和手机立即绑定

在 c# 上的表单中计算最小和最大计算时遇到问题

在 c# 上的表单中计算最小和最大计算时遇到问题

C#
森栏 2022-11-22 15:16:02

我正在创建一个具有多种功能的学生模块表单。我在读取列表框中的最小值和最大值时遇到问题。我已经挣扎了好几天,非常感谢任何形式的帮助。提前致谢!


我尝试过使用不同的数组,存储不同的值等。我认为代码中的问题来自没有存储“标记”。但我确信它正在工作,并且相信问题出在 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贡献1454条经验 获得超5个赞

线

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

是不正确的,会给你字符串中一个字符的 char 值。上面一行所做的是获取字符串标记,再次将其转换为字符串,然后index从该字符串中选择索引处的字符。

相反,您希望字符串作为整数,可以通过以下方式实现

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


查看完整回答
反对 回复 6天前
?
慕少森

TA贡献1713条经验 获得超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字段没有按您预期的那样填充。


查看完整回答
反对 回复 6天前
  • 2 回答
  • 0 关注
  • 7 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信