我对何时使用public static void xxx()
和public void xxx()
感到困惑。我得到的错误是在主类中。
generateRandomNumber();
错误:(错误:非静态方法generateRandomNumber()不能 从静态上下文引用)
getUserInput();
他错误:(错误:非静态方法getUserInput()不能 从静态上下文引用)
的getResult();
错误:(错误:无法引用非静态方法getResult() 来自静态背景)
public class HighLowGame {
int randomNumber;
int guess;
public void generateRandomNumber(){
randomNumber = (0+(int)(Math.random() * ((0 - 99) + 1)));
}
public void getUserInput(){
guess = Integer.parseInt(JOptionPane.showInputDialog(
null,
"Plaese input"));
}
public String getResult(){
if(randomNumber<guess){
return "Your number is bigger than magic number";
}
else if (randomNumber>guess) {
return "Your number is smaller than magic number";
}
else {
return "You are correct! "+randomNumber;
}
}
public static void main(String[] args){
generateRandomNumber();
getUserInput();
getResult();
}
}
答案 0 :(得分:2)
您无法直接从静态上下文访问非静态实例方法/变量。您将需要一个类的实例来访问它们。
public static void main(String[] args){
HighLowGame ref = new HighLowGame ();
ref. generateRandomNumber();
ref.getUserInput();
ref.getResult();
}
或者您可以将所有这些方法静态直接访问。当您认为该类的所有实例应该共享日期/方法时,将方法设为静态。
答案 1 :(得分:1)
您正在尝试调用需要HighLowGame
实例的方法。
将您的主要方法更改为: -
public static void main(String[] args){
HighLowGame game = new HighLowGame();
game.generateRandomNumber();
game.getUserInput();
game.getResult();
}
答案 2 :(得分:0)
您必须在HighLowGame的实例上调用方法。
public static void main(String[] args){
HighLowGame game = new HighLowGame();
game.generateRandomNumber();
game.getUserInput();
game.getResult();
}
或声明您的方法static
,如
public static void generateRandomNumber(){ ..}