Java - 如何在静态方法中使用变量

时间:2018-03-17 14:56:29

标签: java

当方法是静态的(“主”必须是?)时,我无法弄清楚如何使用变量。这是一个例子:

import java.util.Scanner;
public class Yatzy {
    Scanner input = new Scanner(System.in);
    protected static int reply;   

    public static void main(String[] args){
        startGame();
    }
    public static void startGame(){
        System.out.println("How many players? 1 - 3.");
        reply = input.nextInt(); // Option 1: class variable
        int userinput = input.nextInt(); // Option 2: instance variable
    }
}

无论我尝试哪种方式,我都会收到此错误:

  

错误:无法从静态上下文引用非静态变量输入

如何在静态方法中使用用户输入(或更常见的变量)?

1 个答案:

答案 0 :(得分:1)

错误信息很明确,这是java中的基本概念和非常基本的概念。您试图引用静态区域中的变量,因此您应该在静态区域中创建该变量。

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

会做到这一点。

使用静态变量和方法

import java.util.Scanner;
public class Yatzy {
    static Scanner input = new Scanner(System.in);
    static int reply;   

    public static void main(String[] args){
        startGame();
    }
    public static void startGame(){
        System.out.println("How many players? 1 - 3.");
        reply = input.nextInt();
        int userinput = input.nextInt();
    }
}

在上面的示例中,所有方法和变量都在static区域。

使用实例变量和方法

import java.util.Scanner;
public class Yatzy {
    Scanner input = new Scanner(System.in);
    int reply;   

    public static void main(String[] args){
        new Yatzy().startGame();
    }
    public void startGame(){
        System.out.println("How many players? 1 - 3.");
        reply = input.nextInt();
        int userinput = input.nextInt();
    }
}

在main方法中创建类的新对象,然后调用startGame()