为什么Scanner类nextInt()++是语法错误?

ata*_*tus 0 java java.util.scanner

尝试编译

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int x = in.nextInt()++;
    }
}
Run Code Online (Sandbox Code Playgroud)

给出错误java: unexpected type; required: variable; found: value

使用+ 1而不是++解决此错误。

我知道区别是“将变量的值加1”和“将值增加1”。

但是我从没碰到能带来改变的代码。有人可以解释吗?

Wim*_*uwe 9

如果您这样做:

in.nextInt()++
Run Code Online (Sandbox Code Playgroud)

等效于:

in.nextInt() = in.nextInt() + 1
Run Code Online (Sandbox Code Playgroud)

但这是不可能的。您不能将表达式的结果分配给方法调用,它必须是变量。


And*_*cus 5

因为++运算符将intby 加一个1并为该变量分配新值,所以它不是返回任何内容的函数。您不能递增,in.nextInt()因为它不是变量。您必须首先声明一个变量以重新分配它。