当方法是静态的(“主”必须是?)时,我无法弄清楚如何使用变量。这是一个例子:
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
}
}
无论我尝试哪种方式,我都会收到此错误:
错误:无法从静态上下文引用非静态变量输入
如何在静态方法中使用用户输入(或更常见的变量)?
答案 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()
。