所以,我正在用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!")'
}
}
任何帮助将不胜感激,这可能是一个基本问题,但我不确定
答案 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!")'