0

每次我尝试在其中执行一行代码时,我都会收到此错误:“无法对非静态字段进行静态引用”.nextInt()

以下是可能影响(我能想到的)的代码行:

private Scanner input = new Scanner(System.in);
int priceLocation = input.nextInt();
4

3 回答 3

2

这很可能是因为您试图访问input静态方法,我假设它是该main()方法。像这样的东西

private Scanner input = new Scanner(System.in);

public static void main(String[] args) {
    int priceLocation = input.nextInt(); // This is not allowed as input is not static

您需要制作您的inputasstatic或将其移动到static( main ) 方法中。

解决方案1:inputas 设为static.

private static Scanner input = new Scanner(System.in);

public static void main(String[] args) {
    int priceLocation = input.nextInt();

解决方案2:移动inputmain 内部(请注意,如果它移动到内部,则不能input在任何其他方法中使用main(),因为它将是本地的)。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int priceLocation = input.nextInt();
于 2013-11-13T07:18:17.803 回答
0
private Scanner input = new Scanner(System.in); // make this static 

如果您在静态方法中访问它。你必须使input静态。

private static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
    int priceLocation = input.nextInt();
   // without static you will get that error.
}
于 2013-11-13T07:20:19.237 回答
0

这是因为您定义输入的方式

private Scanner input = new Scanner(System.in); // notice private
int priceLocation = input.nextInt();

私有变量在类中定义,外部方法如

class myclass{

    private Scanner input = new Scanner(System.in);
    void methodname(){
        int priceLocation = input.nextInt();
    } 
}

或者,如果您想在方法内定义输入

class myclass{
    void methodname(){
        Scanner input = new Scanner(System.in); // you can make this a final variable if you want
        int priceLocation = input.nextInt();
    }
}
于 2013-11-13T07:24:28.287 回答