Closed. This question needs debugging details。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2个月前关闭。
编辑:添加的MovementDataStorage数据=新的MovementDataStorage();注释中指出的要澄清的主要类别。
我有3个班级,都在同一个程序包中。
Main类中main方法的代码片段:
我的ActionsMovement类具有以下代码段:
最后,我的MovementDataStorage具有以下代码段:
当
如果手动更改
如果在我的
代码运行并编译,没有错误/异常
如果您主要需要
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2个月前关闭。
编辑:添加的MovementDataStorage数据=新的MovementDataStorage();注释中指出的要澄清的主要类别。
我有3个班级,都在同一个程序包中。
Main类中main方法的代码片段:
ActionsMovement move = new ActionsMovement();
MovementDataStorage data = new MovementDataStorage();
move.goForward();
System.out.println(data.getLocationNorth()); //this would show 0, intended result is 1
我的ActionsMovement类具有以下代码段:
MovementDataStorage data = new MovementDataStorage();
public void goForward()
{
if (data.getDirection().equals("North")) {
data.setLocationNorth(data.getLocationNorth() + 1);
}
}
最后,我的MovementDataStorage具有以下代码段:
private int locationNorth;
private String direction = "North";
public int getLocationNorth() {
return locationNorth;
}
public void setLocationNorth(int locationNorth) {
this.locationNorth = locationNorth;
}
public String getDirection() {
return direction;
}
public void setDirection(String direction) {
this.direction = direction;
}
当
move.goForward();
运行时,int locationNorth
的值不会增加-我尝试从main方法和goForward
方法内部检查值。如果手动更改
int locationNorth
值,则可以看到更改。如果我通过move.goForward();
进行操作,它似乎并没有改变。如果在我的
main
方法中添加:data.setLocationNorth(data.getLocationNorth()+1);
System.out.println(data.getLocationNorth());
int locationNorth
的值确实变成了我想要的。代码运行并编译,没有错误/异常
最佳答案
问题是您有两个MovementDataStorage
,一个在Main
类中打印,另一个在ActionsMovement
中设置值。
一种解决方案是使用MovementDataStorage
中的ActionsMovement
。
class Main {
ActionsMovement move = new ActionsMovement();
move.goForward();
System.out.println(move.getData().getLocationNorth());
}
class ActionsMovement {
public MovementDataStorage getData() {
return this.data;
}
}
如果您主要需要
MovementDataStorage
,则可以创建一个实例并将其作为参数发送class Main {
MovementDataStorage data = new MovementDataStorage();
ActionsMovement move = new ActionsMovement(data);
move.goForward();
System.out.println(move.getData().getLocationNorth());
}
class ActionsMovement {
MovementDataStorage data;
public ActionsMovement(MovementDataStorage data) {
this.data = data;
}
public ActionsMovement() {
this.data = new MovementDataStorage();
}
public MovementDataStorage getData() {
return this.data;
}
}
09-12 18:16