整数不更新,虽然方法应该强制它
所以,我创建了一个基于文本的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!")'
}
}
任何帮助将不胜感激,这可能是一个基本的问题,但我不知道
你在错误的地方调用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);
后,您将拥有一个其值不为零的字段。你现在可以得到。
我认为它有效,对,但是...为什么要创建一个新的变量,如果你已经在课堂上有了它? –
@DamianLattenero它不创建一个新变量,它将一个值赋给上面的字段('private int jellybeanCount;')。 – Yahya
是的!对不起,我在谈论那个领域:)。为什么需要? –
编辑
如果你真的想有一个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
类中,这就是你有一个类,首先有一个实例变量。
@ maytham-ɯɐɥʇʎɐɯ感谢您的编辑! –
调用豆形软糖(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!")'
}
由于int是原始类型,而不是由基准设置
private int jellybeanCount= ...
你可能想下面来修改这个方法返回一个值
public int jellybeans(int Amount){
return Jellybeans + Amount;
}
并调用它,如下
jellybeanCount = util.jellybeans(5);
Util.printAnimatedText("You now have " + jellybeanCount + "
jellybeans!")'
是的,这是一个基本问题。 'jellybeancount'是你做任务时返回的任何'getJellybeans'的副本。 getJellybeans变化时它不会改变。就好像,我有一张纸上写着5张纸,并告诉你拿出自己的一张纸并复制我的纸。如果我在纸上划掉5,然后将它改为6,那么你的纸张会改变吗? – ajb