This question already has answers here:
Java non-static method addInv(int) cannot be referenced from a static context
(4个答案)
3年前关闭。
我正在尝试从另一个类访问扫雷游戏的对象设置器,并且不确定是否确实可行。
本质上,我有一个Board类,其中包含设置木板的所有逻辑,并且在我的main方法内部,我想提示用户输入一个int,然后将该值传递给
我的主要方法(包含在
在我的
我的板setHealth方法如下
现在,我当前遇到的错误是
我的理解是,我正在尝试在尚未实例化的对象上设置setHealth(这是我在未使用setter方法的另一个阶段出现的错误),因此如何重新设计我的方法以允许这样做?
但是,如果以这种方式执行操作,则healt应该也是静态的,并且静态变量对于类的所有实例都是通用的,因此这不是一个好的策略
对于您的主要方法,您应该执行以下操作
我希望这可以帮助
(4个答案)
3年前关闭。
我正在尝试从另一个类访问扫雷游戏的对象设置器,并且不确定是否确实可行。
本质上,我有一个Board类,其中包含设置木板的所有逻辑,并且在我的main方法内部,我想提示用户输入一个int,然后将该值传递给
Board.setHealth()
。我的主要方法(包含在
Mines.java
中)的提示如下if (keyboard.nextInt() < 1) {
throw new Exception("Number must be higher than 0!");
}
else health = keyboard.nextInt();
Board.setHealth(health);
在我的
Board.java
构造函数中,我声明了2个整数,startHealth(1)
和health(not yet defined)
我的板setHealth方法如下
public void setHealth(int health){
this.health = health;
}
现在,我当前遇到的错误是
non-static method setHealth(int) cannot be referenced from a static context
。我的理解是,我正在尝试在尚未实例化的对象上设置setHealth(这是我在未使用setter方法的另一个阶段出现的错误),因此如何重新设计我的方法以允许这样做?
最佳答案
不...您正尝试使用静态方式调用setHealth,但未将其声明为静态
只有以这种方式声明方法时,才能使用代码
public static void setHealth(int health){
this.health = health;
}
但是,如果以这种方式执行操作,则healt应该也是静态的,并且静态变量对于类的所有实例都是通用的,因此这不是一个好的策略
对于您的主要方法,您应该执行以下操作
if (keyboard.nextInt() < 1) {
throw new Exception("Number must be higher than 0!");
}
else health = keyboard.nextInt();
Board b = new Board();
b.setHealth(health);
我希望这可以帮助
10-06 16:07