我知道有很多像这样的问题,但它并没有真正帮助我。我必须编写一个程序,帮助小学生学习乘法。使用SecureRandom对象生成两个正的一位数整数。然后程序应该向用户提示一个问题,例如“6次7多少?”我已经完成了困难的部分,但我不能让我的类中的变量适用于其他方法。我将“获取非静态变量randomNumbers不能从静态上下文引用”错误!请有人帮帮我!!
http://
答案 0 :(得分:1)
错误是
无法从静态上下文引用非静态变量
randomNumbers
这意味着,因为你声明randomNumbers
就像这样
public class computerAssistedInstruction {
Random randomNumbers = new Random();
int answer;
}
您无法在静态方法中使用它(或answer
)
public static void newQuestion(){ ... }
要么设置randomNumbers
和answer
个静态变量,要么使newQuestion
成为实例方法(即不是static
),如下所示:
public class computerAssistedInstruction {
Random randomNumbers = new Random();
int answer;
...
public void newQuestion() {
...
}
}
现在,您需要稍微编辑main
方法,因为在没有类的实例的情况下无法调用非静态方法。所以,而不是
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
int input;
newQuestion();
input = scnr.nextInt();
if (input != answer) {
System.out.println("No. Please try again.");
}
else {
System.out.print("Very Good!");
newQuestion();
}
}
你现在需要这个:
public static void main(String[] args) {
computerAssistedInstruction instance = new computerAssistedInstruction(); // Create an instance of the class here.
Scanner scnr = new Scanner(System.in);
int input;
instance.newQuestion(); // Call newQuestion() on the instance.
^^^^^^^^^^^^^^^^^^^^^^^
input = scnr.nextInt();
if (input != answer) {
System.out.println("No. Please try again.");
}
else {
System.out.print("Very Good!");
instance.newQuestion();
^^^^^^^^^^^^^^^^^^^^^^^
}
}