Closed. This question needs debugging details。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? 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