整数不更新,虽然方法应该强制它

时间:2017-07-02 01:16:35

标签: java integer

所以,我正在用Java创建一个基于文本的游戏,货币就是豆形软糖。不过我有一个问题。每当我设置货币加5时,它就不会,并返回0.这是代码

public class Util{

    public int Jellybeans = 0;

    public void jellybeans(int Amount){
        Jellybeans = Jellybeans + Amount;
    }

    public int getJellybeans(){
        return Jellybeans;
    }
}


public class Tutorial{

    Util util = new Util();
    private int jellybeanCount = util.getJellybeans(); 

    private void dialog(){
        //unrelated irrelevant stuff
        util.jellybeans(5);
        Util.printAnimatedText("You now have " + jellybeanCount + " 
        jellybeans!")'
    }
}

任何帮助将不胜感激,这可能是一个基本问题,但我不确定

4 个答案:

答案 0 :(得分:5)

你在错误的地方调用getJellybeans()。你需要做的是:

Util util = new Util();
private int jellybeanCount; 
private void dialog(){
    util.jellybeans(5);
    jellybeanCount = util.getJellybeans(); // here
    Util.printAnimatedText("You now have " + jellybeanCount + " 
            jellybeans!")'
}

为什么?

因为当您在开头创建Util对象时,Jellybeans字段尚未为空(或特别等于 ZERO )。因此,当您调用getJellybeans()时,该字段仍然没有5,并返回其初始值 ZERO

但是,在将字段的值设置为5 util.jellybeans(5);之后,您将拥有一个值为0以外的字段。你现在可以得到。

答案 1 :(得分:3)

  

修改

如果你真的想拥有一个jellybean计数器并封装它,你应该做一些额外的事情:

public class Util{

    private int Jellybeans = 0; //make this variable private, so you only expose it and edit it via getters and setters

    public void jellybeans(int Amount){
        Jellybeans = Jellybeans + Amount;
    }

    public int getJellybeans(){
        return Jellybeans;
    }
}


Util util = new Util();
//private int jellybeanCount = util.getJellybeans(); // this is not needed
private void dialog(){
    //unrelated irrelevant stuff
    util.jellybeans(5);
    Util.printAnimatedText("You now have " + util.getJellybeans() + " 
    jellybeans!")' // here you use the getter, so you have full control of the state of util class
}

这样,你将对象的行为封装在Util类中,就像你有一个类一样,首先是一个实例变量。

答案 2 :(得分:2)

在调用jellybeans(5)之后,你没有调用getJellybeans()方法。

    private int jellybeanCount = util.getJellybeans(); 
    private void dialog(){
        //unrelated irrelevant stuff
        util.jellybeans(5);
        jellybeanCount = util.getJellybeans(); 
        Util.printAnimatedText("You now have " + jellybeanCount + 
        jellybeans!")'

    }

答案 3 :(得分:0)

因为int是基本类型而不是

中的引用设置
private int jellybeanCount= ...

您可能希望修改此方法以返回值

 public int jellybeans(int Amount){
     return Jellybeans + Amount;
 }

并按以下方式调用

    jellybeanCount = util.jellybeans(5);
    Util.printAnimatedText("You now have " + jellybeanCount + " 
    jellybeans!")'