Я смущен между тем, когда следует использовать public static void xxx()
и public void xxx()
. Ошибка, которую я получаю, находится в основном классе.Ошибка статических и нестатических
generateRandomNumber();
The error : (error: non-static method generateRandomNumber() cannot be referenced from a static context)
getUserInput();
he error : (error: non-static method getUserInput() cannot be referenced from a static context)
GetResult();
The error : (error: non-static method getResult() cannot be referenced from a static context)
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();
}
}
Эмпирическое правило: если поле/метод относится к самому классу он должен быть статическим. Если он принадлежит экземпляру класса, он не является статичным. Поскольку нестатические принадлежат экземпляру, вам нужен экземпляр для доступа к ним. – jlordo
'main()' является статическим. Вы не можете вызывать нестатические методы (или поля), не используя экземпляр класса, к которому эти методы относятся, в пределах этого статического метода. – Lion
Возможный дубликат [java: нестатическая переменная не может быть указана из статического контекста Ошибка] (http://stackoverflow.com/questions/926822/java-non-static-variable-cannot-be-referenced-from-a -static-context-error) – EJP