我是Java的新手,在一个没有结局的情况下我咳嗽了,至少对我来说是这样;基本上我想做的是通过相同的方法增加两个int,但似乎我无法弄清楚。
例:
int health;
int mana;
每个值附近都有一个按钮,对应于显示生命值和魔法值的实际标签。
public void upgrade(int health, int mana){
the problem is that I don't know how to do it?
This method should be able to increase only one stat (mana or health), and it will be called on button clicked(action listener)
}
请给我一些见解!
对...好吧,我以某种方式让它工作。问题是,我不知道如何将变量设置为特定的 int。这是我所拥有的
当我调用我使用升级(mana(的方法时;然后对于我拥有的方法;
public void upgrade(int val){
if(val < 5)
val = val + 1;
setMana(val);
}
价值将增加。问题是我也想单独使用这种方法来养生,我真的不知道下一步该怎么做。我也一直在按价值查看传递;请问有什么见解吗?
尝试思考面向对象!
public class ManaAndHealth {
int health;
int mana;
public int getHealth() {
return health;
}
public void setHealth(int theHealth) {
health=theHealth;
}
public void setMana(int theMana) {
mana=theMana;
}
public int getMana() {
return mana;
}
}
然后你可以像这样使用它:
public void upgrade(ManaAndHealth mah){
mah.setMana(mah.getMana()+10);
mah.setHealth(mah.getHealth()+10);
}
这只是为了展示概念,然后其他东西,如maxMana
和maxHealth
可能会额外限制升级......
Java 方法调用使用"按值调用"参数传递。
让我们忽略传递引用的非基元类型(也按值传递(。我们只看一下基元类型:
class Example{
int field1 = 0;
void method1( int arg1 )
{
arg1 = 5;
}
void method2()
{
field1 = 5;
}
void driver()
{
method1(field1); // <= (a copy of) the _value_ of field1 will be
// passed to method1. The value of field1 will
// stay the same, no matter what happens inside method1.
// field1 == 0
method2(); // uses the class's field => change will be visible
// field1 == 5
}
}
如果您使用与void method1( int field1 )
相同的名称,则只会隐藏方法中的类字段。更改仍将仅在本地可见。
所以我最近一直在测试东西,看看如何使用单一方法来更改 int 法力值和生命值。我不知道这是否是正确的方法,但它在我的情况下效果很好。对于那些可能正在寻找实际答案的人来说,它可能很有用: 基本上,我添加了一个名为CE的新int,每次我调用升级时,我都会将其与传递值(val(相等。
public void upgrade1(int val){
if(val < 5)
val = val + 1;
CE = val;
}
当我点击按钮时,我将魔法值和生命值(每个单独(设置为与CE相等。从那里我只需要将法力值和生命值设置为 CE。现在可以自行更改这些值,而无需修改不需要修改的值。感谢您的支持和协作社区!