变量预期

And*_*lko 2 java variables increment

private void calculateForEachQuestion() {
    ...
    if (questions.size() >= answers.size()) {
        answers.forEach(answer -> {
            if (questions.contains(answer))
                this.answer.setPoints((this.answer.getPoints())++);
                // Variable expected  ^                    
    });
}
Run Code Online (Sandbox Code Playgroud)

我遇到的错误是:


需要意外类型:
找到变量:value

这个陈述有什么问题?

this.answer.setPoints((this.answer.getPoints())++);
Run Code Online (Sandbox Code Playgroud)

qww*_*wwq 9

++只有在应用于声明的变量时,运算符才有意义.

该运营商将加一到integer,long等,并将结果保存到就地相同的变量.

如果没有声明的变量,则无处可保存结果,这就是编译器抱怨的原因.

++在这种情况下允许使用运算符的一种方法是(不是最简洁的代码,但为了说明这一点):

int myVariable = this.answer.getPoints();
myVariable++;
this.answer.setPoints(myVariable);
Run Code Online (Sandbox Code Playgroud)


use*_*460 5

this.answer.getPoints()将返回一个值,并且您不能使用递增++或递减--.您只能在变量上使用它.

如果你想为它添加1,你可以这样做:

this.answer.setPoints((this.answer.getPoints())+1);
Run Code Online (Sandbox Code Playgroud)

我知道,但为什么呢?

你可以这样做:

int x = 5;
x++; // x is a variable and can have value 6
Run Code Online (Sandbox Code Playgroud)

但不是这个:

5++; // 5 is a value and can't have value 6
Run Code Online (Sandbox Code Playgroud)