C#实现整数列表绝对值求和功能返回结果错误是什么原因
代码问题原因及修复方案
问题根因
Math.Abs()方法执行后会返回传入数值的绝对值,并不会修改传入的参数本身,你当前代码中仅调用了该方法但未接收其返回值,这行代码没有任何实际效果。- C#中的int属于值类型,foreach循环中的
item是列表中对应元素的临时副本,就算你给item赋值,也不会修改原始List集合中的元素,你传入sum方法的还是存储着-1、-2、-3的原列表,求和后自然得到-6。
修复方案
你可以选择以下任意一种方式修改代码,运行后都能得到预期结果6:
方案1:直接遍历累加绝对值,不需要单独调用sum方法
public static int sumAbsolute(List<int> list) { int sum = 0; foreach (var item in list) { sum += Math.Abs(item); } return sum; }
方案2:复用已有的sum方法,先生成存储绝对值的新列表再传入
public static int sumAbsolute(List<int> list) { List<int> absoluteList = new List<int>(); foreach (var item in list) { absoluteList.Add(Math.Abs(item)); } return sum(absoluteList); }
内容的提问来源于stack exchange,提问作者mightycode Newton
相关产品推荐
相关产品推荐

