0

我对何时使用public static void xxx()和感到困惑public void xxx()。我得到的错误是在主类中。

生成随机数();

错误:(错误:无法从静态上下文引用非静态方法 generateRandomNumber())

获取用户输入();

他错误:(错误:无法从静态上下文引用非静态方法 getUserInput())

得到结果();

错误:(错误:无法从静态上下文引用非静态方法 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();
}

}

4

3 回答 3

2

您不能直接从静态上下文访问非静态实例方法/变量。你将需要你的类的一个实例来访问它们。

public static void main(String[] args){
    HighLowGame  ref = new HighLowGame ();
   ref. generateRandomNumber();
    ref.getUserInput();
    ref.getResult();
}

或者您可以将所有这些方法设为静态并直接访问它们。当您认为该类的所有实例都应该共享日期/方法时,将方法设为静态。

于 2013-02-12T11:00:41.697 回答
1

您正在尝试调用需要一个实例HighLowGame才能工作的方法。

将您的主要方法更改为:-

public static void main(String[] args){
    HighLowGame game = new HighLowGame();
    game.generateRandomNumber();
    game.getUserInput();
    game.getResult();
}
于 2013-02-12T11:01:12.333 回答
0

您必须在 HighLowGame 的实例上调用方法。

public static void main(String[] args){
    HighLowGame game = new HighLowGame();
    game.generateRandomNumber();
    game.getUserInput();
    game.getResult();
}

或声明您的方法static,例如

public static void generateRandomNumber(){ ..}
于 2013-02-12T11:01:22.983 回答