【发布时间】:2013-02-12 10:58:18
【问题描述】:
我对何时使用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();
}
}
【问题讨论】:
-
经验法则:如果字段/方法属于类本身,它必须是静态的。如果它属于该类的一个实例,则它不是静态的。因为非静态的属于一个实例,所以你需要一个实例来访问它们。
-
main()是静态的。如果不使用这些方法属于该静态方法的类的实例,则不能调用非静态方法(或字段)。
标签: java