【问题标题】:Compilation error, unexpected type. required: variable found: value编译错误,意外类型。必需:找到的变量:值
【发布时间】:2021-08-24 15:37:38
【问题描述】:
public static List<Integer> gradingStudents(List<Integer> grades) {
    for(var i = 0; i < grades.size() - 1; i++){
        if(grades.get(i) >= 38){
            
            var currDiff = 5 - (grades.get(i) % 5);
            
            if(currDiff < 3){
                grades.get(i) += currDiff;
            }
        }
    }
    return grades;

}

我收到一个编译错误,意外类型。必需:找到的变量:值。有人可以将我推向正确的方向吗?

【问题讨论】:

  • 哪一行给出了错误?
  • 对不起,这个:grades.get(i) += currDiff;
  • 方法调用 (get(i)) 返回一个值。您不能分配给一个值。 (+= 是一个赋值运算符。)您可能应该使用set 方法。

标签: java compilation


【解决方案1】:

问题
线 grades.get(i) += currDiff; 将被处理为; grades.get(i) = grades.get(i) + currDiff;

所以基本上总和的值将分配给 Grades.get(i) 这是不可能的。 (因为这是一个值本身,而不是一个变量)

解决方案
您可能需要将代码更改为什么;

grades.set(i, grades.get(i) + currDiff);

当然,根据您在这里的确切目的,我可能对解决方案有误。

【讨论】:

  • 思路正确但语法错误,您的意思可能是grades.set(i, grades.get(i) + currDiff);
【解决方案2】:

grades 是一个 List 对象,get 方法返回一个值。你不能这样设置值!

你可以这样做:

public static List<Integer> gradingStudents(List<Integer> grades) {
    for(var i = 0; i < grades.size() - 1; i++){
        if(grades.get(i) >= 38){
            
            var currDiff = 5 - (grades.get(i) % 5);
            
            if(currDiff < 3){
                grades.set(i, grades.get() + currDiff);
            }
        }
    }
    return grades;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2018-09-30
    • 2011-02-14
    相关资源
    最近更新 更多