Java代码编译报错unexpected type required: variable found: value求助
错误原因
- 报错直接触发点是
grades.get(i) += currDiff;这行代码:Java里List.get(int index)方法返回的是对应位置的值拷贝,不是可赋值的左值变量,所以不能直接对get()方法的返回值做累加/赋值操作,编译器才会提示「需要变量,实际得到的值」的错误。 - 附带存在隐藏逻辑错误:你当前的循环条件写的是
i < grades.size() - 1,会漏掉处理List最后一个元素,遍历全量元素应该调整为i < grades.size()。
修复方案
你可以用List.set(int index, E element)方法替换对应位置的元素值,修改后的参考代码如下:
public static List<Integer> gradingStudents(List<Integer> grades) { for(var i = 0; i < grades.size(); i++){ Integer grade = grades.get(i); if(grade >= 38){ var currDiff = 5 - (grade % 5); if(currDiff < 3){ grades.set(i, grade + currDiff); } } } return grades; }
内容的提问来源于stack exchange,提问作者argetlam
相关产品推荐
相关产品推荐

