You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#成绩转换程序求最低分函数返回0无编译报错问题咨询

问题原因

getMinimumGrade函数存在初始化逻辑错误:

  • 最小值初始值被硬编码为0,常规成绩取值均大于等于0,遍历过程中没有任何成绩能满足grade < min的判断条件,所以函数永远返回初始值0。
  • 额外注意:求最高分的函数也存在隐藏bug,只是测试场景为正分所以未触发,如果所有成绩为负数(比如存在扣分场景),最高分函数也会永远返回0。

修复方案

方案1:修改初始值为列表首元素(兼容手写逻辑需求)

先判断列表非空避免索引异常,再将初始值设为列表第一个元素,修改后的代码如下:

static float getMinimumGrade(List<float> listOfNumberGrades){
    // 空列表返回值可根据业务需求调整
    if(listOfNumberGrades == null || listOfNumberGrades.Count == 0)
        return 0;
    float min = listOfNumberGrades[0];

    foreach(float grade in listOfNumberGrades){
        if( grade < min){
            min = grade;
        }
    }
    return min;
}

同时建议同步修改最高分函数,消除隐藏bug:

static float getMaximumGrade(List<float> listOfNumGrades){
    if(listOfNumGrades == null || listOfNumGrades.Count == 0)
        return 0;
    float max = listOfNumGrades[0];

    foreach(float grade in listOfNumGrades){
        if( grade > max){
            max = grade;
        }
    }
    return max;
}

方案2:调用C#内置方法(更简洁稳定)

C#的System.Linq命名空间已经封装好了集合的最值、平均值计算逻辑,直接调用即可省去手写遍历的出错概率:

  1. 代码顶部引入命名空间:
using System.Linq;
  1. 直接调用内置方法获取对应值:
float minimumGrade = scores.Min();
float maximumGrade = scores.Max();
float averageScore = scores.Average();

内容的提问来源于stack exchange,提问作者Ty_Olz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:06:02